Альтернативные тела для HTTP PUT

Я разрабатываю REST-ful веб-сервис, и у меня есть вопрос о методе HTTP PUT.

Я хочу разрешить людям отправлять контент, используя тело запроса application/form-data. Однако ответ по умолчанию будет в application/xml.

Это приемлемо?

Эверт


person Evert    schedule 11.06.2009    source источник


Ответы (2)


Типы контента важны только в рамках одного запроса. Все, что они делают, это описывают формат отправляемого контента.

Ваша веб-служба должна предоставлять наиболее приемлемый ответ на запрос клиента, который она способна предоставить. Запрос клиента должен включать заголовок Accept, описывающий допустимые типы контента. Если ваша служба не может предоставить ни один из типов контента в этом заголовке, верните 406 Not Acceptable

В вашей ситуации, если ваши клиентские запросы GET содержат application/xml в заголовке Accept, то можно ответить application/xml, независимо от любого запроса PUT, сделанного на запрошенных ресурсах.

РЕДАКТИРОВАТЬ:

определение кода состояния для 406 Not Acceptable содержит примечание с последующий:

Примечание. Серверам HTTP/1.1 разрешено возвращать ответы, которые не являются приемлемыми в соответствии с заголовками принятия, отправленными в запросе. В некоторых случаях это может быть даже предпочтительнее отправки ответа 406. Пользовательским агентам рекомендуется проверять заголовки входящего ответа, чтобы определить, является ли он приемлемым.

Таким образом, вы можете вернуть application/xml, когда захотите.

person rojoca    schedule 12.06.2009

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

Рой Филдингс, 2000 г., доктор философии. диссертация: Архитектурные стили и проектирование сетевых программных архитектур составляют основу REST.

person Dave Anderson    schedule 11.06.2009
comment
Интересная статья, но она не отвечает на мой вопрос. Пример: я РАЗМЕЩАЮ новую статью в /articles/firstpost, я получаю возможность использовать тип содержимого application/xml или application/form-data. Я выбираю позднее. Затем я выполняю GET для статьи и получаю представление application/xml. Это нормально? - person Evert; 11.06.2009
comment
Извините, я все еще новичок в REST, но, насколько я понимаю, это действительно зависит от того, как XML будет использоваться клиентом. Сущность сообщения должна быть в формате данных, который наиболее подходит для клиента и не требует специального синтаксического анализа проблемы, так как это свяжет клиента и службу вместе. Вот сообщение, в котором это обсуждается еще немного; peej.co.uk/articles/rest-data-formats.html< /а>. По каким причинам вы думали, что application/xml может не следовать принципам REST? - person Dave Anderson; 12.06.2009