Есть ли необходимость в использовании API запросов GET, поскольку POST лучше во всех отношениях? - PullRequest
0 голосов
/ 22 апреля 2020

Итак, мы начинали новый проект с нуля, и один из разработчиков предложил, почему любые запросы GET API как POST API лучше во всех отношениях. (По крайней мере, при использовании мобильного клиента)

Если посмотреть дальше, кажется, что POST может сделать все, что может GET, и сделать это лучше -

  • , немного более безопасным, чем параметры не указаны в URL
  • ограничение больше, чем у запроса GET

Так есть ли хоть одна причина иметь GET API? (Это будет использоваться только с мобильного клиента, поэтому кеширование браузера c не влияет на нас)

1 Ответ

1 голос
/ 22 апреля 2020

Нужно ли когда-либо иметь API GET-запросов, поскольку POST лучше во всех отношениях?

В общем, да. В ваших конкретных c обстоятельствах - возможно, нет.

GET и POST являются токенами метода .

Маркер метода запроса - основной источник семантики запроса

Они представляют собой форму метаданных, включенных в запрос http, чтобы компоненты общего назначения могли знать семантику запроса и вносить конструктивный вклад.

POST в некотором смысле является методом подстановки - он может означать что угодно . Но одно из следствий этого - поскольку метод имеет неограниченную семантику, компоненты общего назначения не могут делать ничего полезного, кроме как передавать запрос.

GET , однако, имеет безопасная семантика (которая включает идемпотентную семантику). Поскольку запрос является идемпотентным, компоненты общего назначения знают, что они могут повторно отправить запрос GET, когда сервер не возвращает ответа (ie сообщений теряются на ненадежном транспорте); Компоненты общего назначения могут знать, что представления ресурса могут быть предварительно извлечены, уменьшая воспринимаемую задержку.

Ранее вы отклонили кеширование как проблему, но вы можете переосмыслить это - ограничение кэша является важным элементом, который помог сети завоевать весь мир.

Сокращение всего до POST уменьшает HTTP из приложения для передачи документов по сети в тупой транспорт.

Использование HTTP для транспорта не обязательно неправильно: простой протокол доступа к объектам (SOAP) работает таким же образом, как и gRP C. Вы по-прежнему получаете авторизацию и условные запросы; функции HTTP, которые в противном случае вам могут понадобиться, чтобы свернуть свои собственные.

В этот момент вы не выполняете REST, но это нормально; не каждый должен.

Это не значит, что я думаю, что каждый должен проектировать свои собственные системы в соответствии с архитектурным стилем REST. REST предназначен для долгоживущих сетевых приложений, которые охватывают несколько организаций. Если вы не видите необходимости в ограничениях, не используйте их. ( Филдинг, 2008 )

...