REST API Design Query 2

Использовать Noda Time :

LocalDate start = new LocalDate(2013, 1, 5);
LocalDate end = new LocalDate(2014, 6, 1);
Period period = Period.Between(start, end, PeriodUnits.Months);
Console.WriteLine(period.Months); // 16

(пример источника)

2
задан Khuzi 28 February 2019 в 20:35
поделиться

2 ответа

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

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

0
ответ дан Eric Stein 28 February 2019 в 20:35
поделиться

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

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

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

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

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

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

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

0
ответ дан Turing85 28 February 2019 в 20:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: