hal / json元素中的链接可以返回404吗?

时间:2016-11-10 16:24:07

标签: json hal-json

我正在实施一个hal / json api。

根对象(士兵)有一个相关对象(剑),映射在/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 - 对象,链接/soldier/{object_id}/sword是否会出现在_links - 数组中?

  2. 如果它应该,我会从这个链接中得到什么?空物体或404?甚至hal / json RFC是否允许_links - 数组中的链接导致404?

  3. 我不知道如何解决这个问题,我想知道什么是正确的

1 个答案:

答案 0 :(得分:1)

理想情况下,我认为如果士兵没有剑(如果计算成本不高),你甚至不会发布链接。在我看来,返回HttpStatusCode 404没有留下任何解释空间,不像“空对象”(无论那样)。我也没有看到导致404的链接有任何问题,但建议的draft规范可能会被解释(RFC 5988似乎也有关于此的信息)。

我认为你不会在RESTful HAL领域找到非常严格,强制执行的规则,更像是指南,很少是对或错,黑色或白色,更像是灰色阴影 - 只是找出有效的方法为您而且为您的客户建立明确的合同。