從這個聲音,這聽起來更像一個RPC調用。具體來說,「這裏是一個URL列表,給我回檔案」。
即製造方法沒有特別的RESTful,如REST不是基於RPC系統。
你需要做的是把檔案爲reources和方法來創建,然後爲他們服務了。
例如,你可以:
POST /archives
Content-Type: application/json
{ "image1": "http://ww.o.com/1.gif",
"image2": "http://www.foo.be/2.gif" }
結果,你會得到
HTTP/1.1 201 Created
Location: http://example.com/archives/1234
Content-Type: application/json
然後,你可以做一個請求http://example.com:
GET /archives/1234
Accept: multipart/mixed
在這裏,你將會在一個請求中得到實際的存檔(就像你想的那樣),只是它是一個多部分格式化的結果。 (多/ X-ZIP將工作太,這是一個zip文件)
如果你做的事:
GET /archives/1234
Accept: application/json
你還是會回到你送原(所以你可以,也許是JSON,編輯和更新存檔,你可能不想支持發送二進制圖像)。
要改變它,你只會回傳的更新:
PUT /archives/1234
Content-Type: application/json
{ "image1": "http://ww.o.com/1.gif",
"image2": "http://www.foo.be/2.gif",
"image3": "http://www.foo2.foo/4.gif" }
的資源/存檔/ 1234,這是它的名字。
它在這種情況下兩種表示:JSON的版本,實際的,二進制歸檔。您的服務使用Accept標頭中指定的內容類型區分兩者。該標題是客戶告訴你它想要什麼。
當你與歸檔完成後,只需將其刪除
DELETE /archives/1234
或者你可以讓服務器到期後的某個時刻的資源。
如前所述,問題不是有效負載,而是內容類型。理想情況下,內容類型儘可能好地描述數據。 Multipart在這裏更合適。它還允許您混合圖像(比如說,合併PNG和JPG)。而且這個成本對於新的元數據而言是最小的開銷。 – 2009-10-20 03:46:51