2010-06-17 2 views
0

Я разрабатываю веб-службу REST с использованием ответа формата XML, и у меня есть некоторые проблемы (на самом деле, одна проблема).RESTful Web Services: различное представление XML для того же ресурса

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

Что мне следует сделать, предоставить пользователю различные схемы XML для одного и того же ресурса или написать только одну XML-схему и прочитать некоторые поля или нет в зависимости от метода, который я запрашиваю?

Благодаря

ответ

0

Из вашего описания, я не вижу, что, как два представления ресурса. Я рассматриваю его как один ресурс, который меняется со временем.

0

Похоже, что ваш вопрос связан с документацией. Каков наилучший способ сообщить разные правила для приемлемых представлений в зависимости от состояния ресурса, а точнее, существует ли он или нет.

Если это так, и вы используете файлы W3C XML Schema (XSD) для документирования ваших представлений, то я рекомендую один XSD-файл, который позволит полям, но добавлять дочерние элементы xsd: annotation в поля в вопрос, и обратите внимание, что эти поля разрешены только при создании нового ресурса, а не при изменении существующего ресурса.

Затем вы можете использовать тот же XSD для проверки обоих вариантов использования и иметь несколько строк кода, чтобы специально проверять неизменяемые поля и отклонять запрос, если пользователь пытается их изменить. Это действительно важно; важна документация, но наличие системы дает полезную обратную связь. Если кто-то пытается изменить одно из неизменяемых полей, верните «400 Bad Request», а в теле ответа - четкое понятное для человека объяснение проблемы.

0

Что я должен делать, чтобы дать пользовательскую различные XML-схемы для того же ресурс или написать только один XML-схему и прочитать некоторые поля или не в зависимости от метода я запрашивается ??

Если вы хотите повторно использовать части схемы, вы можете импортировать эти детали из другого файла или написать код на языке сервера, чтобы повторно использовать его. Я думаю, что лучше использовать поля с языком на стороне сервера, потому что он более гибкий.

Смежные вопросы