我应该如何处理在JSON HATEOAS链接和参考? [关闭](How should I han

2019-08-01 19:00发布

我在设计一个REST API的过程,并像RESTful的,因为它得到。 我想结合HATEOAS到JSON响应。

添加URL到相关资源是很容易的,但没有在结构上进行一些讨论使用了这些链接。

文章很多,我发现用借来的结构从ATOM供稿:

"links": [ 
    {"rel": "self", "href":"http://example.org/entity/1"},
    {"rel": "friends", "href":"http://example.org/entity/1/friends"}, ... 
]

这提出了一些问题:

  • 为什么使用数组作为容器? 据一名JavaScript开发人员,我知道,访问链接将与链接作为一个对象的属性更容易。 例如:

     "self": { "href":"http://example.org/entity/1" }, /* (facebook uses this) */ "friends": { "href":"http://example.org/entity/1/friends", "type": "..."} 
  • 是否有一个共同的JSON结构 (再次调整原子旁边) 来描述资源属性的参考? (例如,消息的发送者)。

    参考或许应该被解析为再次URL,但它是坏的,包括简单的ID呢? 有一些像:

     "sender": { "id": 12345, "href": "resource-uri" } 

我的思维方式是,虽然HATEOAS使得它如此一个客户端并不需要很多的知识使用API​​,我有点舍不得删除的可能性,使用知识(如通过建立链接访问资料图片客户端无需先查找用户)。

Answer 1:

我重新启动的API-工艺谷歌组这个话题,并得到了一些伟大的反应。

该阵列设计的主要优点是:

  • 对同一关系的多个链接
  • 对于同一个链接倍数关系,而无需编写链接aggain
  • 订购链接的功能

事业的地图具有更好的可访问性。

至于结构去有很多的可能性:

  • JSON-HAL: http://blog.stateless.co/post/13296666138/json-linking-with-hal或也http://stateless.co/hal_specification.html
  • JSON-LD: http://json-ld.org/ (任选地使用水润词汇)
  • JSON-架构: http://json-schema.org/ (在页面的底部theHyper元模式)
  • 收藏+ JSON: http://amundsen.com/media-types/collection/

我想我会去HAL,因为它是最干净的解决方案外,其余全部看那种......奇怪的JSON。



Answer 2:

至于结构的话,你可以尝试寻找HAL( http://stateless.co/hal_specification.html )或JSON-LD:( http://json-ld.org/ )



Answer 3:

我认为它使您可以提供基于HTTP方法多个环节。

"links": [ 
    {"rel": "sender", "method":"post", "href":"http://example.org/entity/1"},
    {"rel": "sender", "method":"put", "href":"http://example.org/entity/1"}, ... 
]

也许你能适应,为您的想法

"sender": { 
     "href":"http://example.org/entity/1",
     "methods": ["put","post"]
}


文章来源: How should I handle HATEOAS links and references in JSON? [closed]