Альтернативные тела для HTTP PUT - PullRequest
1 голос
/ 11 июня 2009

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

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

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

Эверт

Ответы [ 2 ]

3 голосов
/ 12 июня 2009

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

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

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

EDIT:

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

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

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

0 голосов
/ 11 июня 2009

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

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

...