2013-08-07 24 views
3

我想實現的酒店預訂HATEOS基於REST的服務,但非上下文相關的操作有這樣的困惑:使用REST和HATEOS

1)如何從WADL不會分開,客戶來了解可能的操作及其對應的URI。我應該在客戶端打到REST服務的根目錄時將所有可能的操作和URI作爲響應嗎?

2)當客戶得到某個地區的所有住宿選項列表時,我將返回他詢問的地區中所有酒店的列表。響應包含:

<accommodation> 
    <hotel info="http://welco.me/hotel/xxxxxx" price="5000"/> 
    <hotel info="http://welco.me/hotel/yyyyyyy" price="3000"/> 
</accommodation> 

但查詢我這裏是客戶端將如何知道類似於越來越在價格排序順序清單等相關可能的操作?

回答

2
  1. 在回答你的第一個問題,也有文件,允許客戶端發現RESTful API中幾個規格的。
    • Swagger
    • JSON Home
    • 谷歌使用自己的Discovery Service,但是不像揚鞭和JSON家庭,不幸的是,我不認爲有一些幫助您使用其公開爲自己的API的開源庫。
  2. 對於您的第二個問題,我會傾向於客戶/開發者發現諸如從Swagger/JSON Home文檔進行排序等參數。但是,如果它是一個超強/重要的關係,您還可以將其作爲鏈接數據返回到響應中:
    • HAL中,您可以提供一個links對象,其中包含指向相關資源的鏈接。
    • JSON-LD中,您可以添加具有相關API網址值的字段。然後,您可以添加一個@content來添加描述這種關係意味着什麼的信息。
0
  1. 您應該使用link hints較早的做法OPTIONS方法有some長期caveats

  2. 包括使用自定義鏈接關係的鏈接,如http://welco.me/#sort-by-price,其中您定義的URI意味着您想要的任何內容。您應該在該URI提供一些開發人員文檔,但客戶端應用程序永遠不會對其進行取消引用,它只是將URI用作不相等的字符串進行等式比較。