我正处于规划REST api的早期阶段,我希望它遵守REST的HATEOAS约束。但我也想提供一种JSON格式。所以我的问题是,在JSON中是否有表示链接和表单的约定。
我已经找到了链接的例子,看起来这是一种非常常见的表示链接的方式:
"links": [
{"rel": "self", "href":"http://example.org/entity/1"},
{"rel": "friends", "href":"http://example.org/entity/1/friends"}]
另一方面,表示形式并不是我见过的很多。我在想,也许有人已经坐下来,按照这些思路想出了一些东西,但考虑了所有的警告:
"forms" : [
{"rel" : "new client", "action" : "/clients", "method": "post",
"fields" : ["name":"string", "zipcode":"int", "signedup":"date", "state": ["Alabama",...]...]}]
这样做的灵感来自于看这个视频,Jon Moore认为JSON不是一个很好的超媒体api格式:
http://oredev.org/2010/sessions/hypermedia-apis
顺便说一句,这是一次非常棒的演讲!
所有的意见都很感谢!
发布于 2013-01-19 02:17:21
JSON Schema标准(特别是“超模式”)明确支持这一点。您引用了一个JSON (Hyper-)Schema (使用HTTP头),该模式定义了如何将数据解释为超文本的规则。
构建链接的信息可以在任何地方。超模式记录了如何从数据组装链接URI(它可以是一个模板),它们还指定了HTTP方法、编码类型等。
要获得表单功能:您可以为与请求一起提交的数据指定一个完整的模式。必需/可选属性、数组长度约束等等。
作为演示,下面是一个理解超模式并为链接提供适当形式的JavaScript库演练的一部分:jsonary.com。
发布于 2013-12-25 05:45:01
我一直在开发一个API,使用JSON Hyper Schema。您可以浏览周围,甚至注册、登录和执行一些操作。在这里查看:http://api.psprt.com
编辑请参阅此处的最新内容: www.passportedu.com https://github.com/bpanahij/HypermediaServer https://github.com/bpanahij/client-schema.json
我还开源了API代码:https://github.com/bpanahij/passportedu_schema。
请随时查看、借用和评论。
JSON Hyper Schema (另请参阅JSON-Schema)有一种通过属性成员指定表单的方法:
{
"id": "/api/v1",
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "PassportEDU API",
"name": "PassportEDU API",
"type": "object",
"description": "Bringing global students together with global schools.",
"links": [
{
"title": "Log In",
"rel": "authenticate",
"href": "/api/v1/authenticate",
"method": "POST",
"properties": {
"username": {
"title": "Your username",
"description": "Your email address or username",
"type": "string"
},
"password": {
"title": "Your password",
"description": "Your password",
"type": "password"
}
},
"required": ["username", "password"]
}
]
}
发布于 2012-11-25 06:22:17
看看Collection+JSON,HAL,和/或警报器。
https://stackoverflow.com/questions/13542335
复制相似问题