Следует ли редактировать комментарий через POST или PUT? - PullRequest
1 голос
/ 29 декабря 2010

У меня есть следующий URI: Posts/{postId}/Comments/{commentId}
Я бы хотел, чтобы пользователи могли редактировать комментарий через мой API, должно ли редактирование выполняться с помощью POST или PUT?
Одной рукой, POST обновляет содержимоересурса, так что это имеет смысл, но с другой стороны, PUT заменяет его новым.Поэтому, если я правильно понимаю с POST, мне нужно отправить только то, что должно быть обновлением, а с PUT я отправляю весь ресурс.
Обычно в формах редактирования весь ресурс загружается в любом случае, так какой смысл использовать POST?
Если я выберу один или другой подход, в чем различия?

Ответы [ 2 ]

2 голосов
/ 29 декабря 2010

Из того, что я прочитал (в RESTful Web Services , опубликованном O'Reilly ), очевидно, что вам следует использовать PUT для обновления существующего комментария. 1006 *

  • PUT предназначен для обновления, а также для создания ресурса.

  • POST также можно использовать для создания ресурса. Разница здесь в том, что при POST ing вам не нужно знать точный URI ресурса, который будет создан. (Служба сообщит URI нового ресурса в своем ответе.)

  • POST подходит для частичного обновления или при добавлении информации к ресурсу; PUT подходит для полного обновления (замены) ресурса.

  • При обновлении вы можете отправить частичные обновления, но вы должны убедиться, что они идемпотентны; то есть. если вы отправляете одно и то же обновление более одного раза, обновление всегда будет иметь одинаковый эффект. Не отправляйте обновления, такие как «Увеличить n на 1»; вместо этого отправьте обновление, например «Установите n на 5».

Таким образом, мое предложение по вашему делу таково:

  • Используйте POST - /Posts/{postId}/Comments для создания нового комментария, так как клиент не знает {commentId} заранее.

  • Используйте PUT /Posts/{postId}/Comments/{commentId} для полного обновления комментария (или, возможно, POST при добавлении текста к нему).

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