Считается ли плохой практикой выполнение HTTP POST без тела объекта? - PullRequest
130 голосов
/ 16 ноября 2010

Мне нужно вызвать процесс, который не требует ввода от пользователя, только триггер. Я планирую использовать POST / URI без тела для запуска процесса. Я хочу знать, считается ли это плохим с точки зрения HTTP и REST?

Ответы [ 5 ]

110 голосов
/ 17 ноября 2010

Я задал этот вопрос в рабочей группе IETF HTTP несколько месяцев назад.Краткий ответ: НЕТ, это не плохая практика (но я предлагаю прочитать ветку для более подробной информации).

66 голосов
/ 16 ноября 2010

Использование POST вместо GET вполне разумно, поскольку оно также указывает серверу (и шлюзам на этом пути) не возвращать кэшированный ответ.

42 голосов
/ 17 ноября 2010

POST полностью в порядке. В отличие от GET с POST, вы меняете состояние системы (скорее всего, ваш триггер «что-то делает» и изменяет данные).

Я использовал POST уже без полезной нагрузки, и он чувствует себя хорошо. Одна вещь, которую вы должны сделать при использовании POST без полезной нагрузки: Pass header Content-Length: 0. Я помню проблемы с некоторыми прокси, когда я api-клиент не прошел его.

14 голосов
/ 16 ноября 2010

Если вы используете POST / uri без тела, это похоже на использование функции, которая не принимает аргумент .eg int post (void);поэтому разумно иметь функцию для вашего класса ресурсов, которая может изменять состояние объекта без аргумента.Если вы решили реализовать сенсорную функцию Unix для URI, разве это не будет хорошим выбором?

0 голосов
/ 09 июля 2019

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

Например, если вам нужно POST 'hello world' до конечной точки, вы должны сделать так, чтобы это выглядело так: http://api.com? Param = hello% 20world

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