【问题标题】:Can a link in a hal/json element return a 404?hal/json 元素中的链接能否返回 404?
【发布时间】:2016-11-10 16:24:07
【问题描述】:

我正在实现一个 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-object,链接/soldier/{object_id}/sword 是否应该出现在_links-array 中?

  2. 如果应该,我将从这个链接中得到什么?空对象还是 404? hal/json RFC 是否允许在 _links-array 中包含指向 404 的链接?

我不问如何解决这个问题,我想知道什么是对的

【问题讨论】:

    标签: json hal-json


    【解决方案1】:

    理想情况下,如果士兵没有剑(如果计算成本不高),我认为您甚至不会发布链接。在我看来,返回 HttpStatusCode 404 没有解释的余地​​,这与“空对象”(无论是什么)不同。我也没有看到导致 404 的链接有任何问题,但建议的 draft 规范可能会以其他方式解释(RFC 5988 似乎也有这方面的信息)。

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

    【讨论】:

    • 嗯,不发布链接不是那么容易,因为那时你不知道这个对象可能存在,没有那个链接你不能在那里存储东西。在这种情况下,Spring Data Rest 的默认行为似乎是返回 404 链接。
    猜你喜欢
    • 2017-10-25
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 2017-11-25
    相关资源
    最近更新 更多