2009-05-23 40 views
0

我目前正在使用CakePHP編寫一個REST服務,我想知道如何通過REST將item_ids的數組發送到某個操作。將數組發送到CakePHP中的REST服務

class ItemsController extends AppController { 

var $components = array('RequestHandler'); 
var $helpers = array('Text', 'Xml'); 

function index() 
{ 

} 

function create($itemsArr) 
{ 
     //handle $itemsArr here and sends data as xml to views. 
} 

} 

我想我真正的問題是,請求將如何?

http://mysite/items/create/ ???

我想我可以通過使用implode(someSeperator, array)作爲1參數的值,但有沒有更好的解決方案?

在此先感謝

回答

0

這實際上適用於任何網頁,不只是CakePHP。

任何想要發送大量字段的網頁都必須將它們全部包含在POST請求中。

如果你有一個帶有50個輸入的網頁表單,並在底部提交,默認情況下頁面將序列化數據並以表單請求發送。

如果你不希望所有的數據在單獨的條形碼中發送,那麼使用分隔符也可以很好地工作,這意味着它們都會有一個參數。

財產以後這樣的:

http://mysite/items/create?mydata=23-45-65-32-43-54-23-23-656-77 
0

另一種選擇:

$safedata = base64_encode(serialize($arrayofdata)); 

,並把它傳遞給網址安全的字符串。

然後解壓:

$data = unserialize(base64_decode($safedata); 
1

如果你真的想成爲RESTful的這個,你肯定會想使用POST請求創建記錄。這就是說,如果你關心的是對標準的嚴格要求,但是它也會對你有所幫助,因爲我讀到你的數組長度可能會有很大的差別 - 有時候是1個ID,或者30個其他時間等等。 )有一個最大的字符限制,你可以想象到的顛簸。

如果您使用POST請求進行滾動,您可以輕鬆地傳入逗號分隔列表(想想如何傳遞帶有多個複選框的字段名稱),或者我最喜歡的機制是JSON編碼的數組(表示爲字符串,可以很容易地在另一側JSON解碼。

2

這不是休息。 REST是如何使用HTTP,而不是XML!

一個典型的HTTP請求創建一個項目會是這樣

PUT http://mysite/items/ HTTP/1.1 
Host: xxxxx 

<myitem> 
<text> asdasdas </text> 
</myitem> 

你可以在請求的正文中使用任何你想要的。 XML,JSON,PHP SERIALIZE或您自己的數據格式。

相關問題