REST API 指定值选项的设计

REST API design for specifying value options

给定如下资源:

GET: /api/examples/1
{
  "id": 1,
  "direction": "North"
}

也支持POST, PUT"direction"的可能值应该如何指定?

此外,是否有一种解决方案可以让消费者知道哪些值是可用的(如果这些值是上下文相关的)?例如如果这个例子变得更复杂:

GET: /api/examples/
{[
  {
    "id": 1,
    "startLocation": "Kentucky, USA",
    "direction": "North"
  }
  {
    "id": 2,
    "startLocation": "North Pole",
    "direction": "South"
  }
}]

(含糊不清的东西):

"options": [
  {
    "value": "North",
    "validWhen": "startLocation !== `North Pole`"
  },
  {
    "value": "East",
    "validWhen": "true"
  },
  ...
]

是否有比从每个 example returns 当前 有效选项链接的另一个资源更好的解决方案?如果不是,消费者如何知道更改 "startLocation" 会更改 "direction" 的有效值集?

为了扩展@Justas 在他的评论中所说的内容,如果我正确理解您的要求,您的资源可能类似于:

GET /examples/1
{
    "startLocation": "Kentucky, USA",
    ...
    "_links": {
        "travel-north": "/some/url",
        ...
    }
}

我认为您可能正在寻找的是 JSON-Schema。这允许您严格描述您的 JSON 文档中可用的选项,并且您可以 link 使用 describedBy link.

到文档