2016-11-10 64 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

相关问题