RESTful веб-сервисы и HTTP-глаголы

Каков минимальный набор HTTP-глаголов, которые сервер должен разрешить классифицировать веб-сервису как RESTful?

Что если мой хостер не разрешает PUT и DELETE ?

Это действительно важно, могу ли я жить долго и счастливо только с помощью GET и POST ?


Обновление: спасибо за ответы, ребята, ответ Роджера, вероятно, был лучшим из-за ссылки на интервью Билла Веннерса и Эллиотта Расти Гарольда. Теперь я понял.


23.08.2008 04:14:17
5 ОТВЕТОВ
РЕШЕНИЕ

Да, вы можете жить без PUT и DELETE.

В этой статье рассказывается, почему: http://www.artima.com/lejava/articles/why_put_and_delete.html

Хотя для истинных РЕСТАФРИАНЦОВ это может быть ересью, в реальном мире вы делаете то, что можете, с тем, что имеете. Будьте настолько рациональны, насколько это возможно, и в соответствии со своим собственным соглашением, насколько можете, но вы определенно можете построить хорошую систему RESTful без P и D.

Р.П.

22
23.08.2008 04:23:10

Если вы просто используете GET и POST, это все равно RESTful. Ваш веб-сервис может делать только то, что требует только GET или POST, так что это нормально.

2
23.08.2008 04:17:31

Современные веб-браузеры обрабатывают только GETS + POSTS. Например, в Rails PUTS + DELETES «подделываются» через скрытые поля формы.

Если ваш фреймворк не имеет обходного пути для «поддержки» PUTS + DELETES, пока не беспокойтесь о них.

1
23.08.2008 06:51:40

Вы также можете использовать X-Http-Verb-Override: DELETE inst. HTTP УДАЛИТЬ. Это также полезно для клиентов Silverlight, которые не могут изменять HTTP-глаголы и поддерживают только GET и POST ...

3
23.08.2008 08:20:47

REST позволяет нарушить соглашение о протоколе, если реализации протокола нарушены (так что единственные нестандартные вещи, которые вы делаете, - это обойти сломанные части реализации). Поэтому в REST допустимо использовать какой-то другой метод для представления обычно неподдерживаемых глаголов, таких как DELETE или PUT.

edit: Вот цитата из Филдинга, который создал и определил REST:

API REST не должен содержать каких-либо изменений в протоколах связи, кроме заполнения или исправления деталей недостаточно определенных битов стандартных протоколов, таких как метод PATCH HTTP или поле заголовка Link. Обходные пути для неработающих реализаций (например, таких браузеров, которые достаточно глупы, чтобы полагать, что HTML определяет набор методов HTTP) должны определяться отдельно или, по крайней мере, в приложениях, с ожиданием того, что обходной путь в конечном итоге будет устаревшим. [Ошибка здесь подразумевает, что интерфейсы ресурса являются объектно-ориентированными, а не универсальными.]

2
20.07.2009 19:04:51
Из этого POV все веб-браузеры не работают. Но кто сказал, что под «клиентами REST» мы подразумеваем веб-браузер?
lutz 20.07.2009 18:59:54
Ты упустил мою точку зрения. Я даже не упомянул браузеры. Но в любом случае вам все равно следует разрешить правильное использование с PUT и DELETE и т. Д. (Если это разрешено вашей хостинговой службой), а также какой-то обходной путь для «сломанных» клиентов.
aehlke 20.07.2009 19:06:55