2009-11-02 56 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