Веб-службы RESTful и HTTP-глаголы
Каков минимальный набор HTTP-глаголов, который сервер должен разрешить для веб-службы классифицироваться как RESTful?
Что делать, если мой хост не разрешает PUT и УДАЛИТЬ?
Является ли это действительно важным, могу ли я жить счастливо с тех пор только с GET и POST?
Обновление: Спасибо за ответы, ответ Роджера, вероятно, лучше всего из-за ссылки на интервью Билла Веннерса и Эллиотта Расти Гарольда, Теперь я получу его.
Ответы
Ответ 1
Да, вы можете жить без PUT и DELETE.
В этой статье рассказывается, почему:
http://www.artima.com/lejava/articles/why_put_and_delete.html
В то время как истинным RESTafrians это может быть ересь, в реальном мире вы делаете все, что можете, с тем, что имеете. Будьте так же рациональны, насколько можете и согласны со своей собственной конвенцией, как можете, но вы можете создать хорошую систему RESTful без P и D.
гр
Ответ 2
Вы также можете использовать X-Http-Verb-Override: DELETE inst. HTTP DELETE. Это также полезно для клиентов Silverlight, которые не могут изменить HTTP-глаголы и поддерживают только GET и POST...
Ответ 3
Если вы просто используете GET и POST, он все еще RESTful. Ваш веб-сервис может выполнять только те действия, которые необходимы только для GET или POST, так что это нормально.
Ответ 4
REST позволяет нарушать протокол соглашения, если реализации протокола нарушены (так что единственные нестандартные вещи, которые вы делаете, - это обойти сломанные части реализации). Поэтому в REST допустимо использовать какой-либо другой метод для представления в основном неподдерживаемых глаголов типа DELETE или PUT.
edit: Вот цитата из Fielding, кто создал и определил REST:
API REST не должен содержать никаких изменений в протоколах связи, кроме заполнения или исправления деталей недописанных битов стандартных протоколов, таких как HTTP-метод PATCH или поле заголовка ссылки. Обходные пути для сломанных реализаций (например, такие браузеры, которые достаточно глупы, чтобы полагать, что HTML определяет набор методов HTTP) должны быть определены отдельно или, по крайней мере, в приложениях, с ожиданием, что обходной путь в конечном итоге будет устаревшим. [Сбой здесь означает, что интерфейсы ресурсов являются объектно-ориентированными, а не универсальными.]
Ответ 5
Сегодня веб-браузеры обрабатывают только GETS + POSTS. Например, в Rails PUTS + DELETES "подделаны" через скрытые поля формы.
Если ваша инфраструктура не имеет обходного пути для поддержки "PUTS + DELETES", не беспокойтесь о них пока.