REST API Design Query 2 - PullRequest
       11

REST API Design Query 2

0 голосов
/ 28 февраля 2019

Если операция POST поддерживает создание только одного ресурса за один раз ИЛИ , она может принять набор ресурсов для создания в одном запросе POST?

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

POST предназначен для всеобъемлющего глагола, который позволяет серверу выполнять любые действия.Хотя он чаще всего используется для создания одного ресурса, он, безусловно, в пределах спецификации создает любое количество ресурсов.Это поясняется в обновленном RFC 7231 :

Если на исходном сервере был создан один или несколько ресурсов в результате успешной обработки запроса POST, исходный сервер ДОЛЖЕНотправить ответ 201 (Создано), содержащий поле заголовка Location, которое предоставляет идентификатор для созданного первичного ресурса ( Раздел 7.1.2 ) и представление, которое описывает состояние запроса при обращении к новому ресурсу (s).

0 голосов
/ 28 февраля 2019

Из определения POST в RFC2616 можно сделать вывод, что СЛЕДУЕТ создавать только один ресурс (как определено в RFC).Например, в этом разделе говорится о « созданном объекте » (единственном числе) по всему абзацу.Более очевидный раздел - это рекомендуемый ответ, когда новые ресурсы создаются через POST:

Если ресурс создан на исходном сервере, ответ
ДОЛЖЕН быть 201 (Создан) и содержат сущность, которая описывает состояние
запроса и ссылается на новый ресурс, а также заголовок Location
(см. Раздел 14.30 ).

Насколько мне известно, вы можете вернуть только одно местоположение в заголовке местоположения.

Вышеупомянутый RFC2616 устарел (спасибо @Eric Stein). обновленная семантика POST может быть найдена в RFC7231 .Опять же, рекомендуемый ответ намекает на семантику:

Если один или несколько ресурсов были созданы на исходном сервере как
результат успешной обработки запроса POST, исходный сервер
СЛЕДУЕТ отправлять ответ 201 (Создано), содержащий заголовок Location
поле, которое предоставляет идентификатор для созданного первичного ресурса
( Раздел 7.1.2 ) и представление, описывающее состояние
запрос со ссылкой на новый ресурс (ы).

Хотя POST МОЖЕТ создать несколько ресурсов, он ДОЛЖЕН создать только один корневой ресурс (или, по крайней мере, это то, что предлагает формулировка).

В целом, существует лишь несколько жестких ограничений относительно того, что разрешено и запрещено, таким образом, формулировка RFC (ДОЛЖНА, МОЖЕТ, ...).Пока вы не видите НЕОБХОДИМО или НЕ ДОЛЖНО в соответствующем RFC, вы можете делать все, что пожелаете, но можете нарушать передовой опыт.

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