我正在爲RESTful API設計自定義媒體類型,並研究了一些「標準」鏈接關係的類型和語義含義,以便爲我的設計提供一些指導。鏈接關係粒度與自定義媒體類型中的精度?
爲了演示這個問題,假設我有一個資源,可以執行標準讀取,更改,刪除方法,並且分別使用GET,PUT和DELETE的HTTP成語來實現這些方法。
我可以合理地(重新)用作RFC5023定義的「編輯」鏈接關係(從IANA link registry),它規定:
」 ...的價值‘編輯’指定的值href屬性 是可編輯成員條目的IRI。當出現在 atom:條目中時,href IRI可用於檢索,更新和刪除由該條目表示的資源....「
這樣,用戶代理可以理解具有「編輯」關係的鏈接將允許資源爲GET,PUT和DELETEd。
但是,這裏存在的問題是,如果編輯資源狀態以使資源現在僅支持GET和DELETE操作,則「編輯」關係不再精確。選項A:指定另一個(複合)鏈接關係,該鏈接關係僅支持GET & DELETE,或者ii)選項B:爲每個可能的狀態轉移指定單獨的鏈接,並使用適當的表示允許的狀態轉移。後一種方法提供精確度,但似乎過於冗長。 (選項C)我可以保留「編輯」關係並接受缺乏精確性,即鏈接將傳遞GET,PUT,DELETE語義,但會嘗試使用PUT的用戶代理HTTP錯誤「405 - 方法不允許」。但是,我對這種方法並不滿意,因爲它暗示客戶端不支持狀態轉換。
總之,問題是什麼纔是平衡鏈接關係普遍性和精度的最明智的方法?
交叉發佈到API Craft [鏈接](http://groups.google.com/group/api-craft/browse_thread/thread/5d478b216f5e0322) – 2012-02-27 21:37:06