RESTful Web Api chain Я использую POST или GET? - PullRequest
0 голосов
/ 10 мая 2018

Если я звоню в службу Web APi и эта служба выполняет различные другие звонки другим службам, использую ли я POST или GET?

Для дальнейшего уточнения, скажем, я вызываю службу Web Api One, говоря: «Делатьвещь'.Задача Web Api One, когда запрашивается таким образом, состоит в том, чтобы ПОЛУЧИТЬ данные из Сервиса Два и данные POST для Сервиса Три.Возможно, Service One затем обновит Service Two.Затем Service One ответит вызывающему абоненту с любым успехом / неудачей.

У меня снова вопрос: должен ли я позвонить вызывающему абоненту, использовать POST или GET для Service One?

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Это все о семантике запроса .Из RFC 7231 :

Маркер метода запроса является основным источником семантики запроса;он указывает цель, для которой клиент сделал этот запрос, и то, что клиент ожидает в качестве успешного результата.

Вот краткое описание некоторых методов HTTP, определенных в RFC RFC 7231 (щелкните ссылки, чтобы проверить полное определение метода):

  • GET: перенести текущее представление целевого ресурса.
  • HEAD: То же, что и GET, но переносятся только строка состояния и раздел заголовка.
  • POST: Выполнить ресурс-специальная обработка полезной нагрузки запроса.
  • PUT: заменить все текущие представления целевого ресурса полезной нагрузкой запроса.
  • DELETE: Удалить все текущие представления целевого ресурса

В дополнение к перечисленным выше методам RFC 5789 стандартизировал HTTP-метод PATCH длявыполнение частичных обновлений ресурса.

POST обычно рассматривается как метод «поймать все» , когда целевой ресурс обрабатывает полезную нагрузку запроса в соответствии с собственной специфической семантикой ресурса.


Методы HTTP могутбыть классифицированным как safe и / или idempotent , и это необходимо учитывать при разработке API с версией HTTP.

0 голосов
/ 10 мая 2018

Обычно я использую различные HTTP-глаголы (GET, POST, PUT, DELETE и т. Д.) При использовании REST API.Тогда конечные точки являются ресурсами сами по себе.Например:

/ car

Итак, глаголы имеют смысл (у вас есть машина? Создаете ли вы? Обновляете ли вы? Удаляете ли вы?)

Но когда меня нетпри использовании REST API глаголы HTTP имеют меньшее значение, и я обычно использую только HTTP POST.В противном случае вы столкнетесь с логическими проблемами, которые возникают здесь.

например

/ rentacar

Этот API-интерфейс моделирует RPC, который может привести к изменению многих ресурсов различными способами.Это не REST API, и поэтому HTTP-глаголы на самом деле не связаны.

Но, честно говоря, для RPC (удаленных вызовов процедур) люди выбирают между GET и POST:

  1. GET для операций, которые ничего не изменяют, и POST для других случаев.
  2. GET для операций, которым не требуется слишком много параметров, и POST для других случаев.
  3. GET и POSTна случайной основе или всегда используйте POST.

Пуристы предпочитают 1. Но иногда вы не знаете, когда произойдут изменения.Итак, выбирайте!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...