问题标签 [hal-json]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
json - 使用 HAL 设计 RESTful API - 序列化模型关系
我对 REST 比较陌生,但我一直在做关于 RESTful 应该如何做的功课。现在我正在尝试为与其他模型有关系的模型创建一个实现 JSON+HAL 序列化程序的 RESTful api。
python中的示例模型:
假设我们有一个类别“目录”,其中包含一个子类别“食物”,其中的产品“汉堡”和“热狗”都是相关的。
第一个问题。类别和产品应该是资源,因此它们需要一个 URI,我应该在我的模型中实现一个 uri 字段并将其存储在数据库中还是以某种方式在运行时计算它,多个标识符(URI)呢?
第二个问题。可发现性,在 Hal 格式中,“GET /”和不同的节点应该返回什么以使 api 易于自我发现。
第三个问题。添加为属性、嵌入或链接。示例“获取 /catalog/food”:
第四个问题。返回结构时我应该走多深。示例“获取/目录
google-chrome - 在浏览器中打开 application/hal+json 响应内联而不是下载它
我想在我的 Chrome 浏览器中打开“application/hal+json”响应。问题是 Chrome 浏览器无法识别 HAL 响应并下载它。在我总是使用Chrome 的 JSON 视图扩展来检查我的 JSON 响应之前。但是自从切换到 HAL 后,它会立即下载我的回复,所以我无法再查看它了。
collections - 嵌入式 HAL 资源集合中没有 self href
我在客户端使用self
href
来自我的 HAL 资源的 CRUD 操作找到正确的路径。在单(吨)资源中,这工作正常(请参阅下面的地址资源,_links
包含self
href
在嵌入资源中)但是当涉及到集合时,情况就不同了。当_links
集合位于 时,不会呈现集合的_embedded
。
早些时候,我通过阅读第一个孩子的 url 来解决这个问题。但这还不够。如果集合是空的,我只有一个空数组,不可能像这样提取 url。如果我想在集合中创建一个新项目,我希望我的客户POST
通过读取self
href
from知道在哪里发送数据_links
。_links
像这样将其包含到我的收藏中是否是个好主意:
现在我可以在这里访问 self href:
编辑(一年后)
最后我通过总是将嵌入资源的链接添加到父资源来解决这个问题。所以在上面的例子中,我的响应对象看起来像这样:
所以无论我是否嵌入了资源,我总是知道它们的位置。_links
对于联系人集合,我将在数组中有指向我的集合端点的链接,并将联系人本身放在_embedded
.
rest - REST/HATEOAS API 的入口点?
我已经开始设计一个 API,并决定尝试使其符合 REST/HATEOAS。API 的入口点应该是什么?
这似乎是一个常见的问题,GET /
但从我读过的内容来看,使用它在逻辑上可能更有意义OPTIONS /
,因为实际上没有/
用于检索的资源。
我在这里给出了这两个例子,使用JSON 的HAL语法作为超媒体格式。
得到 /
要求:
回复:
选项 /
要求:
回复:
json - 如何使用 Spring Hateoas 和 HAL 向链接添加附加属性?
我正在使用配置了 @EnableHypermediaSupport(type = HAL) 的 Spring Boot 和 Spring Hateoas。虽然这在基本场景中工作正常,但我希望能够向链接添加其他属性。例如,很容易返回将呈现如下链接的链接:
我想要做的是为 something rel 中的对象添加更多属性。例如:
在不创建自己的 DTO 的情况下,最好的方法是什么(最好使用 ControllerLinkBuilder)?我尝试创建自己的 Link 子类并为名称(以及 getter 和 setter)添加字段,但它们似乎被忽略了。
json - 带有 AngularJS 前端的 SPRING-DATA-REST 后端
是否有任何前端应用程序示例使用用 angularJS 编写的 Spring-data-rest 后端的 RESTful 服务。
json - 保存相关实体 spring data rest HAL-JSON
我有以下问题
我有一个弹簧数据休息的基本配置(没什么花哨的,没什么定制的)。
使用 spring-data-rest-webmvc 2.0.0 RELEASE 和 spring-data-jpa 1.5.0 RELEASE
A级
B类
存储库 A
存储库 B
当我保存实体时工作正常,但我不知道如何保存关系
例如,使用 http 在“B”中保存“A”
这是我从这个答案中尝试的最后一件事https://stackoverflow.com/a/13031580/651948
我得到一个 201 http 代码,但没有保存实体。
有人试过了吗?
hateoas - 如何使用 Spring-hateoas 使用“templated:true”构建 HAL 链接?
我试图弄清楚如何使用templated: true
. 如果我使用
和字符仍然被编码{
。知道如何通过其 API}
使用 Spring-hateo 构建模板 URL 链接吗?0.10.0.RELEASE
谢谢。
json - 为什么仅为 POST 请求/201(已创建)响应设置 HTTP 位置标头?
暂时忽略 3xx 响应,我想知道为什么 HTTP 位置标头仅与 POST 请求/201(已创建)响应一起使用。
来自RFC 2616 规范:
对于 201(已创建)响应,位置是请求创建的新资源的位置。
这是一种广泛支持的行为,但为什么不应该将它与其他 HTTP 方法一起使用呢?以JSON API 规范为例:
它为 JSON 有效负载中的当前资源定义了一个自引用链接(对于 RESTful API 来说并不少见)。此链接包含在每个有效负载中。规范说,如果您通过 POST 创建新文档并且该值与有效负载中的自引用链接相同,则必须包含 HTTP 位置标头,但这仅在 POST 中需要。如果您可以只使用 HTTP 位置标头,为什么还要为自引用链接使用自定义格式?
注意:这并不特定于 JSON API。HAL、JSON Hyper-Schema或其他标准也是如此。
注意 2:它甚至不是特定于 HTTP 位置标头,因为它与 HTTP 链接标头相同。如您所见,JSON API、HAL 和 JSON Hyper-Schema 不仅定义了自引用链接的约定,还表达了有关资源的相关信息或资源的可能操作。但似乎他们都可以只使用 HTTP 链接头。(如果他们不想使用 HTTP 位置标头,他们甚至可以将自引用链接放入 HTTP 链接标头。)
我不想咆哮,这似乎是某种“重新发明轮子”。它似乎也非常有限:如果您只使用 HTTP 位置/链接标头,那么您是否在 HTTP 接受标头中要求 JSON、XML 或任何内容都没有关系,您将获得有关您的资源的有用元信息一个 HEAD 请求,如果您使用 JSON API、HAL 或 JSON Hyper-Schema,它将不包含链接。
rest - 将 HAL 词汇与 JSON-LD 结合使用
我想知道,有没有办法将 HAL 概念与 JSON-LD 一起使用?
我有当前的 jsonld 文档:
但我不知道如何定义 that href
has a @type
of @id
,依此类推...
有没有办法基于 RDF(S) 定义 HAL 词汇并以某种方式将其导入到我的 jsonld 文档的@context 中,或者我应该做其他事情吗?
(我试图用各种属性来描述超链接,比如链接关系、HTTP 方法、接受的媒体类型、语言、IRI 模板、输入字段等......所以@id
类型不足以让我描述链接。)