我正在爲我公司的內部數據設計HATEOAS API,但一直在發現鏈接時遇到麻煩。考慮下面的一系列步驟有人可以檢索有關該系統中的特定僱員的信息:HATEOAS - 發現和URI模板
- 用戶發送GET來
http://coredata/
獲得所有可用資源,返回多個環節,包括一個標記爲相對=「http://coredata/rels/employees
」 - 用戶遵循從第一個請求的相對HREF,在執行GET(例如)
http://coredata/employees
從這個最後的調用返回的數據是我的難題,並在那裏我聽說混合的建議的情況。這裏有一些:
- GET將返回所有僱員(可能截斷的數據),並且客戶端將負責從該列表中選擇一個它想要的。
GET將返回一些URI模板鏈接,描述如何查詢/獲取一個員工/獲取所有員工。喜歡的東西:
"_links": { "http://coredata/rels/employees#RetrieveOne": { "href": "http://coredata/employees/{id}" }, "http://coredata/rels/employees#Query": { "href": "http://coredata/employees{?login,firstName,lastName}" }, "http://coredata/rels/employees#All": { "href": "http://coredata/employees/all" } }
我有點卡住這裏剩下最接近HATEOAS。對於選項1,I 確實不想讓我的客戶爲了導航而每次都檢索所有員工,但是我可以看到如何在示例2中使用URI模板引入一些帶外知識。
我的另一個想法是使用RetrieveOne,Query和All操作作爲我的酷URL,但這似乎違反了您應該能夠從一個基本URI導航到所需資源的概念。
有沒有其他人想出了一個很好的方法來處理這個問題?一旦您檢索到一個資源或一組資源,導航就變得非常簡單,但它似乎很難用於發現。
我喜歡這種方法的想法和各種人試圖實現的東西。例如,http://www.restdoc.org/ –