Насколько важно придерживаться соответствующих типов HTTP-запросов при разработке API? - PullRequest
0 голосов
/ 14 апреля 2019

Обычно при разработке API я стараюсь придерживаться следующей структуры:

GET: /resources (get multiple resources)
POST: /resource (create a single resource)
GET: /resource/:id (get a single resource)
PUT: /resource/:id (update a single resource)
DELETE: /resource/:id (delete a single resource)

Но иногда, когда вы «получаете» данные, параметры, передаваемые вначале, выходят за рамки того, что вы можете включить в строку запроса. Например, в приведенном мною примере GET: /resources может быть несколько фильтров, которые вы хотите применить к выбранным вами ресурсам.

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

Ответы [ 2 ]

1 голос
/ 14 апреля 2019

В этом случае можно ли начинать использовать POST, чтобы вы могли включить параметры в тело запроса?

Да, то есть, есть компромиссы.

Каковы недостатки отказа от соблюдения структуры, о которой я упоминал выше?

Это мешает способности общих компонентов интеллектуально участвовать в протоколе.

A GET запрос имеет safe семантику;агент может воспользоваться этим для предварительной выборки ресурсов, сканеры могут свободно исследовать контент и т. д.

Успешные небезопасные методы сделать недействительными записи в кэше.Это становится неловким, когда вы хотите несколько представлений одного и того же ресурса;Извлечение одного представления через POST приведет к удалению других представлений того же ресурса из кэша.

Если все, что нам действительно нужно, это RPC, мы можем сделать все с помощью POST.См., Например, «SOAP», где весь обмен сообщениями встроен в полезную нагрузку, а HTTP просто используется как тупой туннель.

0 голосов
/ 14 апреля 2019

1) REST похож на шаблон проектирования для HTTP-связи.Всегда хорошо следовать REST, особенно когда вы выставляете свой API для публичного использования или браузер для взаимодействия с сервером.

2) Вы можете писать HTTP-запросы даже без правильного шаблона REST, но это приведет к ненужным проблемамесли его браузер для связи с сервером.Поскольку большинство современных браузеров разработано с использованием стандартов REST, они очень хорошо понимают этот шаблон.По умолчанию GET-запросы будут кэшироваться, вместо GET, если вы используете POST по умолчанию, он не будет кешироваться.Таким образом, новый запрос будет отправляться на сервер каждый раз.Так что это приведет к большому количеству соединений, ресурсов и т. Д.

3) GET - Word сам дает вам значение только для получения ресурса.аналогично, POST и PUT для создания записей, DELETE для удаления и т. д.

4) POST-VS-GET - если вы используете POST, вы можете включить RequestBody, тогда как в запросе GET вы не можете.следуйте инструкциям GET для получения данных ресурса

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