2017-03-09 92 views
0

我以HATEOAS開始,我有一個簡單的問題。當我想通過它的ID加載一個特定的資源時,最好的方法是怎麼做的?目前我請求/根路由,這條路線給我這樣一個鏈接:HATEOAS - 刷新頁面時加載資源

{ "rel": "order", "href": "http://api.com/orders/:id" } 

使用模板字符串是一個不錯的方法?

其他問題是:當我有10種資源類型時,我需要將這10次放在根響應中嗎?

回答

1

反問 - 你從哪裏得到你的ID?

我假定通過抓取您的API,以下鏈接 - 但爲什麼你不只保存由服務器返回的整個鏈接,而不僅僅是ID?

這實際上就是HATEOAS的想法:你的API是可探索的,而你只是使用API​​返回的鏈接,而不是從你從資源中提取的id組裝自己的鏈接。

好處是,當API更改(路徑被重命名等)時,您不需要更改您的客戶端代碼。

但是,如果您需要保留更長時間的鏈接(例如,當您想以某種形式將它們加入書籤),那麼這可能不是一個好策略。

然後,按照您的建議使用鏈接模板並從根資源(或從可從根資源輕鬆訪問的合適子資源)中檢索鏈接模板是個不錯的主意。像這樣,你可以肯定你總是有有效的鏈接,但是,這也意味着你必須把它們全部放在那裏(或者至少是你支持深度鏈接的那些鏈接)。

爲表達模板鏈接,您可以用HAL:stateless.co/hal_specification.html

+0

1的ID從我的客戶端路線卡梅斯。 2 - 我不明白保存路線的目的。 :/ –

+1

好吧,HATEOAS的想法是你的API是可探測的,而你只是使用API​​返回的鏈接,而不是組裝你自己的。 但是,如果您選擇自行組裝,那麼您必須提供指向根資源中的所有資源類型的鏈接(或者可以從根資源輕鬆訪問的適當子資源)。 對於表達模板鏈接,您可以使用HAL:http://stateless.co/hal_specification.html – Bernhard

+0

感謝您的幫助。 –