Nano Hash - криптовалюты, майнинг, программирование

Дизайн REST API Какой метод следует использовать для конечной точки, которая вызывает сторонний API?

Я читал об идемпотентных и неидемпотентных методах в REST API, и теперь я создаю REST API, в котором есть конечная точка, которая вызывает сторонний API, то есть поиск рейсов. Каким может быть подходящий метод HTTP для этой конечной точки?

GET flights/from=khi&to=dxb&adults=1&date=2020-01-01

Если я использую метод GET, то как насчет идемпотентности, которая говорит, что результат должен быть одинаковым для каждого запроса к конечной точке. В моем случае API поиска рейсов может возвращать изменяющиеся результаты, которые в конечном итоге будут возвращены из моей конечной точки после небольших преобразований. Влияет ли это на идемпотентность или мне следует использовать для этой цели метод POST?

Спасибо

13.01.2020

Ответы:


1

Если я использую метод GET, то как насчет идемпотентности, которая говорит, что результат должен быть одинаковым для каждого запроса к конечной точке. В моем случае API поиска рейсов может возвращать изменяющиеся результаты, которые в конечном итоге будут возвращены из моей конечной точки после небольших преобразований.

Семантика GET безопасна, что является более сильным ограничением, чем идемпотент:

безопасные методы запроса являются идемпотентными.

Семантика GET заключается в том, что он запрашивает текущее выбранное представление для целевой ресурс. «Текущий» означает, что выбранное представление может меняться со временем, даже между запросами.

Тот факт, что ваши представления зависят от сторонней службы, является деталью реализации и не меняет семантику запросов или ответов.

13.01.2020

2

Точно так же, как если бы вы шли прямо к базе данных, фактический код ответа может отличаться. Идемпотентность — это эффект, который ваш вызов оказывает на ресурс.

Эффект, который ваш вызов оказывает на сторонний API, всегда одинаков, независимо от того, делаете ли вы его 1 раз или 100. Ресурс может меняться со временем, но вы никогда не меняете ресурс с помощью запроса GET. Вот почему он идемпотент.

13.01.2020
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..