首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >具有表单和链接的JSON Hypermedia Api

具有表单和链接的JSON Hypermedia Api
EN

Stack Overflow用户
提问于 2012-11-24 22:52:36
回答 4查看 8.5K关注 0票数 20

我正处于规划REST api的早期阶段,我希望它遵守REST的HATEOAS约束。但我也想提供一种JSON格式。所以我的问题是,在JSON中是否有表示链接和表单的约定。

我已经找到了链接的例子,看起来这是一种非常常见的表示链接的方式:

代码语言:javascript
复制
"links": [ 
{"rel": "self", "href":"http://example.org/entity/1"},
{"rel": "friends", "href":"http://example.org/entity/1/friends"}] 

另一方面,表示形式并不是我见过的很多。我在想,也许有人已经坐下来,按照这些思路想出了一些东西,但考虑了所有的警告:

代码语言:javascript
复制
"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

顺便说一句,这是一次非常棒的演讲!

所有的意见都很感谢!

EN

回答 4

Stack Overflow用户

发布于 2013-01-19 02:17:21

JSON Schema标准(特别是“超模式”)明确支持这一点。您引用了一个JSON (Hyper-)Schema (使用HTTP头),该模式定义了如何将数据解释为超文本的规则。

构建链接的信息可以在任何地方。超模式记录了如何从数据组装链接URI(它可以是一个模板),它们还指定了HTTP方法、编码类型等。

要获得表单功能:您可以为与请求一起提交的数据指定一个完整的模式。必需/可选属性、数组长度约束等等。

作为演示,下面是一个理解超模式并为链接提供适当形式的JavaScript库演练的一部分:jsonary.com

票数 5
EN

Stack Overflow用户

发布于 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)有一种通过属性成员指定表单的方法:

代码语言:javascript
复制
{
"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"]
   }
   ]
}
票数 5
EN

Stack Overflow用户

发布于 2012-11-25 06:22:17

看看Collection+JSON,HAL,和/或警报器。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13542335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档