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


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

однако, в чем разница между PUT/POST? Соответствуют ли они один к одному с созданием и обновлением?

9 191

9 ответов:

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

поставьте можно карты создавать и обновлять в зависимости от существования URI, используемый с нанесенным.

разместить карты для создания.

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

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

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

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

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

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

stormpath youtube video

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

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

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

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

то есть

редактировать записи в блоге:

поставить: /блог/вход/1

создать новый:

пост: / блог / запись

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

общее понимание для систем CRUD-GET = request, POST = create, Put = update, DELETE = delete

прямо сейчас (2016) последние http глаголы GET, POST,патч, поставить и удалить

обзор

  • HTTP GET-SELECT / Request
  • HTTP PUT-UPDATE
  • HTTP POST-INSERT / Create
  • HTTP патч - когда поставитьTing полное представление ресурсов является громоздким и использует большую пропускную способность, например: когда вам нужно частично обновить столбец
  • HTTP УДАЛИТЬ - Удалить

надеюсь, что это помогает!

Если вы заинтересованы в разработке REST API, это ansewome чтение, чтобы иметь! веб-сайт онлайн версия github хранилище

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

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

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

The спецификация HTTP также Полезная ссылка:

метод PUT запрашивает, что закрытый объект будет храниться под поставила запрос URI.

[...]

принципиальная разница между Запросы POST и PUT отражаются в различное значение Запрос URI. URI в запросе POST определяет ресурс, который будет обработайте вложенный объект. Что ресурс может быть принимающим данные процесс, шлюз к некоторым другим протокол или отдельный объект, который принимает аннотации. В отличие от Ури в поставить запрос идентифицирует сущность, приложенная к запросу -- агент пользователя знает, что такое URI предназначен и сервер не должен пытаться применить запрос к некоторым другой ресурс. Если сервер желает этот запрос применяется к другой URI,

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

  • HTTP GET-SELECT / Request
  • HTTP PUT-UPDATE
  • HTTP POST-INSERT / Create
  • HTTP DELETE-УДАЛИТЬ

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

  • получить получить ресурс с сервера
  • сообщение создать ресурс на сервере
  • поставить обновить ресурс на сервере
  • удалить удалить ресурс с сервера

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

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