Я разрабатываю API для работы с HTTP, и мне интересно, если использовать команду HTTP POST, но только с параметрами URL-запроса и без тела запроса, это хороший путь.
Соображения:
- «Хороший веб-дизайн» требует отправки неидемпотентных действий через POST. Это неидемпотентное действие.
- Это приложение легче разрабатывать и отлаживать, когда параметры запроса присутствуют в URL.
- API не предназначен для широкого использования.
- Кажется, что выполнение запроса POST без тела потребует немного больше работы, например,
Content-Length: 0
заголовок должен быть явно добавлен. - Мне также кажется, что POST без тела немного противоречит ожиданиям большинства разработчиков и HTTP-фреймворков.
Есть ли еще какие-нибудь подводные камни или преимущества для отправки параметров запроса POST через URL-запрос, а не тело запроса?
Изменить: Причина, по которой это рассматривается, заключается в том, что операции не являются идемпотентными и имеют побочные эффекты, кроме поиска. Смотрите спецификации HTTP :
В частности, было установлено, что методы GET и HEAD НЕ ДОЛЖНЫ иметь значение выполнения действия, отличного от извлечения. Эти методы следует считать «безопасными». Это позволяет пользовательским агентам представлять другие методы, такие как POST, PUT и DELETE, особым образом, чтобы пользователь знал о том, что запрашивается небезопасное действие.
...
Методы также могут иметь свойство "идемпотентности", заключающееся в том, что (кроме ошибок с ошибками или истечением срока действия) побочные эффекты от N> 0 идентичных запросов такие же, как и для одного запроса. Методы GET, HEAD, PUT и DELETE разделяют это свойство. Кроме того, методы OPTIONS и TRACE НЕ ДОЛЖНЫ иметь побочных эффектов, и поэтому являются по своей сути идемпотентными.