Настройка Restful POST-запроса с использованием xml - PullRequest
2 голосов
/ 02 ноября 2009

Я работаю над настройкой RESTful-запроса для приложения, над которым я работаю, и я хотел использовать xml в качестве запроса в URI вместо того, чтобы позволить клиенту предоставлять параметры в самом URI.

Я ищу такой URI, как: someurl / service / request

вместо: someurl / service / request? Id = {id} & name = {name}

Я искал в Интернете, чтобы увидеть, каково должно быть соглашение при создании запроса POST. Может ли кто-нибудь помочь указать мне правильное направление, как я должен настроить этот запрос POST, позволяющий клиенту использовать XML?

Не уверен, что это уместно, но я настраиваю код на стороне сервера в JAVA, используя инфраструктуру SPRING 3.0. Пожалуйста, дайте мне знать, если мне нужно предоставить более подробную информацию.

Спасибо за вашу помощь !!

Ответы [ 2 ]

2 голосов
/ 03 ноября 2009

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

POST /path/script.cgi HTTP/1.0
User-Agent: HTTPTool/1.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 32

home=Cosby&favorite+flavor=flies

Вы можете сделать это в прототипе довольно просто:

new Ajax.Request('someurl/service', {
method: 'post',
postBody: 'home=Cosby&favorite+flavor=flies',
encoding: 'UTF-8'});

Чтобы добавить свой XML-файл, просто добавьте его в свой postBody с каким-либо разделителем, чтобы ваш cgi знал, где заканчиваются параметры и где начинается xml.

Я думаю, это то, что вы искали, надеюсь, это поможет.

1 голос
/ 03 ноября 2009

Вы можете передать все, что захотите, в своем теле POST. Так что если вы хотите использовать XML, вы можете использовать XML. Пример:

POST /car
Content-Type: text/xml
<car>
   <date>10-10-2007<date>
   <type>Corvette</type>
</car>

HTTP/1.1 201 CREATED

Я думаю, что все структуры REST API позволяют легко указывать XML в запросе клиента и ответе сервера. См. Быстрый старт в Restlet для примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...