作为 RESTful API 提供的资源的功能发现的一部分,我正在寻找一种方法让服务宣布属性的可接受值。考虑以下示例,其中apple
资源具有属性color
:
GET /apples/17
此请求产生:
{
"name": "My yummy apple",
"color": "green"
}
为了让客户了解什么color
值是有效的,例如PUT
在测试这个苹果的新版本时,我可以想到许多可能的方法。但是我在这里没有找到任何最佳实践。HTTP OPTIONS 动词似乎不适用于这种细粒度的发现。我是否应该只向/apples
集合添加一个数组属性:
GET /apples
回复:
{
...
"colorValues": ["red", "green"]
}
有没有更好更常用的方法?
编辑:
刚刚意识到一种可能的方法是为所有“真实”资源的模式添加资源。喜欢的东西会为资源GET /schemas/apple
产生 JSON 模式表示。apple
来自 json-schema.org 的修改示例:
{
"id": "http://foo.bar/schema#",
"$schema": "http://json-schema.org/draft-04/schema#",
"description": "schema for an apple resource",
"type": "object",
...
"colorValues": {
"enum": [ "red", "green" ]
}
}
不过,我还没有找到任何这样的例子。