2010-11-25 28 views
0

我有以下地址返回我的資源列表:REST架構 - 複雜方法的Url如何顯示?

http://example.com/resources/

我還執行了返回特定資源的方法(在這種情況下,資源142)。

http://example.com/resources/142

我想補充的方法,它是典型的HTTP方法之外:列表,創建,檢索,替換,更新。遵循的模式是什麼?在我的具體情況下,我需要檢查資源的可用性。 Url的外觀如何(http://example.com/resources/checkavailability/142)?

我雖然只是簡單地使用GET方法,並檢索該信息作爲返回的對象的一部分。然而,我的一些同事認爲這樣做效率不高(要傳輸的數據將遠遠大於僅僅返回真/假)。

感謝您的幫助!

+0

I如果您在典型的HTTP方法之外添加方法,無論如何您應該添加一個方法來檢查可用性,像EXISTS一樣。這樣你可以使用相同的URL,並返回該方法的真/假。 – 2010-11-25 00:13:08

回答

3

沒有必要的資源,以檢查其他資源的可用性,而且也沒有必要爲GET請求,HEAD請求應該夠了,這是同一個GET請求,但不轉移屍體。然後您可以查看返回碼,並通過這些確定資源是否可用。這假設你已經正確實施了返回碼。

1

雷斯特夫爾通過HTTP爲您提供了統一的接口,你往往不需要進行編碼的操作您的網址

內關於使用GET返回有效載荷效率低下您提到/ checkavailability是一個正當的理由,所以用頭(只它讓你迴應響應標題)。

 
request: 
HEAD /resources/123 

response status: 
404 Not Found: equals to /checkavailability == false 
200 OK: equals to /checkavailability == true 

其他建議統一的界面替換:

  • /資源/列表:GET /資源
  • /資源/替換/ 123:PUT /資源/ 123
  • /資源/更新/ 123:PUT/resources/123
  • /resources/create:POST/resources