2016-11-10 62 views
0

即時通訊執行hal/json api。hal/json元素中的鏈接是否可以返回404?

根對象(士兵)具有相關對象(劍),即下/soldier/{object_id}/sword

{ 
    "id": 12345, 
    "name": "Sir SmokeALot", 
    "_links": { 
    "self": { 
     "href": "http://soldier.local:8080/soldier/12345" 
    }, 
    "sword": { 
     "href": "http://soldier.local:8080/soldier/12345/sword" 
    } 
    } 
} 

映射但並不是每一個士兵有一把劍。想象這位可憐的士兵沒有一把劍。

  1. 如果我檢索soldier -object,應該鏈接/soldier/{object_id}/sword出現在_links - 陣列?

  2. 如果它應該,我會從這個鏈接回來什麼?一個空的對象或404?是否允許通過hal/json RFC在_links -array中鏈接到404?

我不問如何解決這個問題,我想知道最新的權利

回答

0

理想情況下,如果士兵沒有劍(如果計算起來並不昂貴),我認爲你甚至不會發布鏈接。在我看來,返回HttpStatusCode 404沒有任何解釋的餘地​​,不像「空對象」(不管那是什麼)。我也沒有看到通向404的鏈接的任何問題,但提議的draft規範可能會被解釋,否則(RFC 5988也似乎有關於此的信息)。

我不認爲你會在RESTful HAL領域發現非常嚴格,強制執行的規則,更像是指導方針,很少有正確或錯誤,黑色或白色,更像灰色陰影 - 只是找出什麼爲您工作,併爲您的客戶建立明確的合同。

+0

好吧,它不那麼容易不發佈鏈接,因爲那時你不知道這個對象_may_存在,並且你不能在沒有該鏈接的情況下存儲那些東西。 Spring Data Rest的默認行爲似乎是在這種情況下返回404鏈接。 – cari

相關問題