PUT метод может вставлять, удалять. тогда почему мы должны использовать метод POST вместо метода PUT / DELETE / GET - PullRequest
0 голосов
/ 27 апреля 2018

Значение может быть передано, а также получено с использованием любого из команд GET, POST, PUT, DELETE - HTTP. Мы даже можем обновить или удалить данные, используя запрос GET, тогда почему мы должны использовать DELETE для удаления ресурса?

Кроме того, каково значение использования метода POST, если метод PUT может СОЗДАТЬ, а также ОБНОВИТЬ запись?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Вы можете практически использовать POST для выполнения всех операций CRUD, но вы не должны . Потому что у каждого HTTP-глагола есть своя ответственность.

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

Если метод HttpGet может удалить, может вставить, может обновить, а также может Возвращаемое значение, то почему мы используем HttpPort, HttpPut и HttpDelete?

Представьте себе сценарий.

У вас есть метод веб-API, который добавляет новую запись в базу данных с помощью GET. Если ваш запрос GET становится ссылкой, и он сканируется поисковой системой. Ваша база данных будет заполнена повторяющимися данными. Так что в этом случае имеет смысл использовать POST.


Выбор подходящего метода

GET - запрашивает данные у ресурса и не должен вызывать побочных эффектов.

POST - метод запрашивает сервер о создании ресурса в базе данных, в основном, при отправке веб-формы. Сообщение не идемпотентно , что означает, что несколько запросов будут иметь разные эффекты.

PUT - метод запрашивает у сервера обновить ресурс или создать ресурс, если он не существует. Put является идемпотентом, что означает, что несколько запросов будут иметь одинаковые эффекты.

DELETE - метод требует, чтобы ресурсы или его экземпляр были удалены из базы данных.


POST против PUT

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


Есть и другие ограничения для разных глаголов Http.

  • GET-параметры передаются как часть URL-адреса, который ограниченная длина 256 символов по умолчанию, при этом некоторые серверы поддерживают 4000+ символов. Если вы хотите вставить длинную запись, вам придется использовать POST. Запись считается безграничной, но существуют ограничения, которые различаются в зависимости от браузера.
  • GET повторно выполняется, если пользователь нажимает кнопку «Назад» в браузере. Сообщение не.
  • GET кэшируется браузерами, узлами в сети, интернет-провайдерами.
  • Если содержимое не изменяется, GET с тем же URL-адресом должен возвращать одинаковые результаты всем пользователям, иначе вы не будете доверять возвращаемому результату. и т.д.
0 голосов
/ 27 апреля 2018

Технически метод POST охватывает все ваши варианты использования. Глядя на заголовок HTTP-запроса:

POST /service.aspx HTTP/1.1
Host: test.com&page=2

field1=value1&field2=value2

«field1» и «field2» - это параметры POST, «page» - это параметр GET, даже если это запрос POST.

Не каждый сервер поддерживает другие методы. Причина PUT и DELETE заключается в том, что семантически люди хотели, чтобы веб-запросы соответствовали CRUD. В чем разница между запросом, который создает новую запись, или только тем, который изменяет существующую запись? В чем разница между запросом на чтение и изменением записи?

Соглашение должно отображать следующее:

C - New Record - POST
R - Read Record - GET
U - Update Record - PUT
D - Delete Record - DELETE
...