Подтвердить что ты не робот

Какие методы HTTP соответствуют методам CRUD?

В программировании стиля RESTful мы должны использовать HTTP-методы как наши строительные блоки. Я немного смущен, хотя методы соответствуют классическим методам CRUD. GET/Read и DELETE/Delete достаточно очевидны.

Однако в чем разница между PUT/POST? Соответствуют ли они друг другу с помощью Create и Update?

4b9b3361

Ответ 1

Create = PUT with a new URI
         POST to a base URI returning a newly created URI
Read   = GET
Update = PUT with an existing URI
Delete = DELETE

PUT может отображать как Create, так и Update в зависимости от существования URI, используемого с PUT.

Карты POST для создания.

Коррекция: POST также может отображать Update, хотя обычно используется для Create. POST также может быть частичным обновлением, поэтому нам не нужен предложенный метод PATCH.

Ответ 2

Весь ключ заключается в том, выполняете ли вы идемпотентное изменение или нет. То есть, если действие над сообщением дважды приведет к тому, что "та же" вещь будет, как если бы она была сделана только один раз, у вас есть идемпотентное изменение, и оно должно отображаться в PUT. Если нет, он отображает POST. Если вы никогда не разрешаете клиенту синтезировать URL-адреса, PUT довольно близок к Update и POST может обрабатывать Create просто отлично, но это, безусловно, не единственный способ сделать это; если клиент знает, что он хочет создать /foo/abc и знает, какой контент он там размещает, он отлично работает как PUT.

Каноническое описание POST - это когда вы совершаете покупку чего-то: это действие, которое никто не хочет повторять, не зная об этом. Напротив, установка адреса отправки для заказа заранее может быть выполнена с PUT просто отлично: не имеет значения, если вам сказали отправить на 6 Anywhere Dr, Nowhereville один, два или сто раз: это все тот же адрес. Означает ли это, что это обновление? Может быть... Все зависит от того, как вы хотите написать back-end. (Обратите внимание, что результаты могут быть не одинаковыми: вы могли бы сообщать об этом пользователю, когда они в последний раз выполняли PUT как часть представления ресурса, что гарантирует, что повторяющиеся PUT не приведут к идентичному результату, но результат будет по-прежнему быть "тем же" в функциональном смысле.)

Ответ 3

Я искал тот же ответ, вот что говорит IBM. IBM Link

POST            Creates a new resource.
GET             Retrieves a resource.
PUT             Updates an existing resource.
DELETE          Deletes a resource.

Ответ 4

Там отличная видео-беседа youtube от stormpath, на самом деле объясняет это, URL-адрес должен перейти к правильной части видео:

видеоролик для трамплинов

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

Ответ 5

Это зависит от конкретной ситуации.. но в целом:

PUT = обновить или изменить конкретный ресурс с конкретным URI ресурса.

POST = создать новый ресурс под источником данного URI.

т.е.

Редактировать сообщение в блоге:

PUT: /Блог/запись/1

Создайте новый:

POST: /Блог/запись

PUT может создать новый ресурс в некоторых случаях, когда URI нового ресурса становится ясным перед запросом. POST может использоваться для реализации нескольких других случаев использования, которые не покрываются другими (GET, PUT, DELETE, HEAD, OPTIONS)

Общее понимание систем CRUD - это GET = запрос, POST = create, Put = update, DELETE = delete

Ответ 6

Прямо сейчас (2016) последние HTTP-глаголы: GET, POST, PATCH, PUT и DELETE

обзор

  • HTTP GET - SELECT/Request
  • HTTP PUT - ОБНОВЛЕНИЕ
  • HTTP POST - INSERT/Создать
  • HTTP PATCH - когда PUT ting полное представление ресурсов громоздко и использует большую пропускную способность, например: когда вам нужно частично обновить столбец
  • HTTP DELETE - DELETE

Надеюсь это поможет!

Если вы заинтересованы в разработке REST API, это простое чтение! сайт в Интернете версия GitHub хранилище

Ответ 7

Основными блоками REST являются в основном ресурсы (и URI) и гипермедиа. В этом контексте GET - это способ получить представление ресурса (который действительно может быть сопоставлен с SELECT в CRUD-терминах).

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

Я бы предложил прочитать это:

Спецификация HTTP также является полезной ссылкой:

Метод PUT запрашивает, чтобы заключенный объект хранится под предоставленный Request-URI.

[...]

Основное различие между Запросы POST и PUT отражены в различный смысл Request-URI. URI в запросе POST идентифицирует ресурс, который будет обрабатывать закрытую сущность. Что ресурсом может быть прием данных процесс, шлюз для некоторых других протокол или отдельный объект, который принимает аннотации. Напротив, URI в запросе PUT идентифицирует объект, прилагаемый к запросу - пользовательский агент знает, что такое URI и сервер НЕ ДОЛЖЕН попытка применить запрос к другой ресурс. Если сервер желает что запрос будет применен к другой URI,

Ответ 8

Вообще говоря, это шаблон, который я использую:

  • HTTP GET - SELECT/Request
  • HTTP PUT - UPDATE
  • HTTP POST - INSERT/Создать
  • HTTP DELETE - DELETE

Ответ 9

Проект Symfony пытается сохранить свои методы HTTP соединенными с методами CRUD, а их список связывает их следующим образом:

  • GET Получить ресурс с сервера
  • POST Создайте ресурс на сервере
  • PUT Обновление ресурса на сервере
  • УДАЛИТЬ Удалить ресурс с сервера

Стоит отметить, что, как говорится на этой странице, "на самом деле многие современные браузеры не поддерживают методы PUT и DELETE".

Из того, что я помню, Symfony "подделывает" PUT и DELETE для тех браузеров, которые не поддерживают их при создании своих форм, чтобы попытаться приблизиться к теоретически-правильному методу HTTP, даже если браузер не работает Не поддерживайте его.