Разве HTTP-глагол PUT не используется для обновления, а не для создания контента? - PullRequest
18 голосов
/ 14 октября 2010

В CouchDB для создания нового отправляемого вами документа:

PUT /albums/70b50bfa0a4b3aed1f8aff9e92dc16a0

Разве PUT не используется для обновления данных, а не для их создания?

Ответы [ 4 ]

18 голосов
/ 14 октября 2010

Используется для обоих. Quoth RFC :

Метод PUT запрашивает, чтобы вложенный объект был сохранен под предоставленным Request-URI.Если Request-URI ссылается на уже существующий ресурс, вложенный объект СЛЕДУЕТ рассматривать как модифицированную версию, находящуюся на исходном сервере.Если Request-URI не указывает на существующий ресурс, и этот URI может быть определен как новый ресурс запрашивающим пользовательским агентом, сервер происхождения может создать ресурс с этим URI.

15 голосов
/ 14 октября 2010

Ключевым термином для PUT для меня всегда является идемпотент . В то время как для POST вы всегда «добавляете другой» элемент в состояние системы, с PUT действие остается тем же, даже если выполняется несколько раз (поскольку вы обращаетесь к элементу).

Пример:

делает 100-кратный POST / album = вы получите 100 разных альбомов (но с одинаковым содержанием)

выполнение 100 раз PUT / album / 123 = в итоге вы получите один альбом с идентификатором 123 (с содержимым)

1 голос
/ 14 октября 2010

PUT предназначен для создания нового или замены полностью существующего ресурса, когда вы знаете существующий URI или каким будет новый URI.POST предназначен для обновления частей существующего ресурса или для создания нового ресурса, когда сервер должен назначить новый URI.Это так просто.И PUT, и POST используются для создания и обновления, речь идет не о том, создаете ли вы или обновляете, а о том, знаете ли вы уже URI или вам нужен сервер для его назначения.

1 голос
/ 14 октября 2010

PUT действительно используется для обновления контента, но если у вас уже есть идентификатор, вы обновляете.Как правило, в REST вы можете POST до /albums (или что-то еще) создать новую запись с пока неизвестным идентификатором.Так как у вас есть идентификатор, вы обновляете пустой документ с этим идентификатором до содержимого, которое вы предоставляете.

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