В HTTP PUT и POST отправляют данные по-разному? - PullRequest
7 голосов
/ 14 декабря 2011

Из того, что я знаю, вы можете отправлять данные JSON через POST, но должен ли PUT специально отправлять информацию в URI, или вы можете сделать оба варианта?

Ответы [ 4 ]

14 голосов
/ 14 декабря 2011

И POST, и PUT могут использоваться для операций создания и обновления в различных ситуациях. Так в чем же разница между PUT и POST? В двух словах: используйте PUT тогда и только тогда, когда вы знаете как URL, по которому будет располагаться ресурс, так и все содержимое ресурса. В противном случае используйте POST.

POST - невероятно общий глагол. Так как он не обещает ни безопасности, ни идемпотентности, и в RFC он имеет относительно свободно сформулированное описание, вы можете использовать его практически для чего угодно. Фактически, вы можете сделать все ваши запросы POST-запросами, потому что POST дает очень мало обещаний; он может вести себя как GET, PUT или DELETE, если захочет. Он также может делать некоторые вещи, которые не может сделать ни один другой глагол - он может создавать новый ресурс по URL, отличному от URL в HTTP-запросе; и он может модифицировать часть ресурса, не меняя целиком (хотя предложенный, но не общепринятый метод PATCH может сделать нечто подобное).

PUT - гораздо более ограничительный глагол. Он берет полный ресурс и сохраняет его по указанному URL. Если ранее там был ресурс, он заменяется; если нет, то создается новый. Эти свойства поддерживают идемпотентность, чего не может быть наивная операция создания или обновления. Я подозреваю, что это может быть причиной того, почему PUT определяется так, как он есть это идемпотентная операция, которая позволяет клиенту отправлять информацию на сервер.

Ссылки:

  • RFC 2616 - HTTP 1.1
  • RFC 5789 - метод PATCH для HTTP
  • Мартин Фаулер, модель зрелости Ричардсона
2 голосов
/ 14 декабря 2011

С точки зрения HTTP, формат запроса тот же.

1 голос
/ 14 декабря 2011

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

Глагол POST традиционно используется для создания ресурса

Глагол PUT традиционно используется для обновления ресурса

0 голосов
/ 04 февраля 2016

PUT загружает новый ресурс на сервер. Если ресурс уже существует и отличается, он заменяется; если он не существует, он создается.

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

...