我什么时候应该返回一个Json模式来防止带外传输知识到REST API客户端?

时间:2015-11-30 13:38:14

标签: rest jsonschema hateoas

在PoC阶段开发HATEOAS REST API。在json-schema上为所有架构归零。我希望客户能够使用此架构智能地创建表单以创建新资源。只是不确定何时归还?

可能的选项可能是:

  1. 将其作为指向_schema(如_self)
  2. 下的另一个关系的链接返回
  3. 在OPTIONS上返回它(不相信OPTIONS不可缓存,并且应该仅用于代理和cors类型的发现)
  4. 只要预期用户可以创建新资源(但它可能会增加有效负载而不是每次用户可能想要创建),
  5. 都会返回资源的完整模式。
  6. 如果GET请求带有查找架构的自定义标头,则返回它。
  7. 您可以提出的任何其他智能选项:)

2 个答案:

答案 0 :(得分:1)

不需要自定义标头。这就是Accept标题的用途。客户端应在Accept标头中指定所需的格式。如果您正在使用HATEOAS,您还应该定义自己的媒体类型,因为这是客户端将拥有的唯一带外信息,但如果您使用的是通用媒体类型,则可以返回json-schema application/schema+jsonapplication/json的简单json。

答案 1 :(得分:1)

JSON Schema文档包含两个关于将文档与模式相关联的建议。

第一个也是最受欢迎的是使用profile Content-Type标头属性。

Content-Type: application/my-media-type+json; profile="http://example.com/my-hyper-schema#"

其他建议(我从未见过任何人使用过)是Link标题rel=describedBy

Link: <http://example.com/my-hyper-schema#>; rel="describedBy"

参考:http://json-schema.org/latest/json-schema-core.html#anchor33