2009-11-02 62 views
2

我正在为正在处理的应用程序设置RESTful请求,并且我想在uri中使用xml作为请求,而不是允许客户端提供参数在URI本身。使用xml设置Restful POST请求

我期待有URI,像这样:someurl /服务/请求

代替:someurl /服务/请求ID = {ID} &名= {name}的

我有吗?一直在网上查找创建POST请求时的约定。任何人都可以帮助我指出正确的方向,我应该如何设置这个POST请求,允许客户端使用XML?

不确定它是否相关,但我使用SPRING 3.0框架在JAVA中设置服务器端代码。请让我知道是否需要提供更多详细信息。

感谢您的帮助!

+0

根据HTTP规范,您可以在POST请求中指定参数,但是如果您想要POST XML文件,那么这是该文件的外观,我猜。 –

回答

2

您可以将参数放入请求的主体中。它们与将它们附加到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在哪里开始。

我想这就是你要找的,希望它有帮助。

+0

如果您只想发送完整的XML文档,那也没关系......只需用您的XML数据替换'postBody'即可。在这种情况下,改变内容类型也可能是一个好主意。 – jheddings

1

你可以通过任何你想要在你的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的quick start