问题标签 [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.

0 投票
2 回答
4597 浏览

json - 使用 HAL 设计 RESTful API - 序列化模型关系

我对 REST 比较陌生,但我一直在做关于 RESTful 应该如何做的功课。现在我正在尝试为与其他模型有关系的模型创建一个实现 JSON+HAL 序列化程序的 RESTful api。
python中的示例模型:

假设我们有一个类别“目录”,其中包含一个子类别“食物”,其中的产品“汉堡”和“热狗”都是相关的。
第一个问题。类别和产品应该是资源,因此它们需要一个 URI,我应该在我的模型中实现一个 uri 字段并将其存储在数据库中还是以某种方式在运行时计算它,多个标识符(URI)呢?
第二个问题。可发现性,在 Hal 格式中,“GET /”和不同的节点应该返回什么以使 api 易于自我发现。

第三个问题。添加为属性、嵌入或链接。示例“获取 /catalog/food”:

第四个问题。返回结构时我应该走多深。示例“获取/目录

0 投票
3 回答
5632 浏览

google-chrome - 在浏览器中打开 application/hal+json 响应内联而不是下载它

我想在我的 Chrome 浏览器中打开“application/hal+json”响应。问题是 Chrome 浏览器无法识别 HAL 响应并下载它。在我总是使用Chrome 的 JSON 视图扩展来检查我的 JSON 响应之前。但是自从切换到 HAL 后,它会立即下载我的回复,所以我无法再查看它了。

0 投票
1 回答
2324 浏览

collections - 嵌入式 HAL 资源集合中没有 self href

我在客户端使用self href来自我的 HAL 资源的 CRUD 操作找到正确的路径。在单(吨)资源中,这工作正常(请参阅下面的地址资源,_links包含self href在嵌入资源中)但是当涉及到集合时,情况就不同了。当_links集合位于 时,不会呈现集合的_embedded

早些时候,我通过阅读第一个孩子的 url 来解决这个问题。但这还不够。如果集合是空的,我只有一个空数组,不可能像这样提取 url。如果我想在集合中创建一个新项目,我希望我的客户POST通过读取self hreffrom知道在哪里发送数据_links_links像这样将其包含到我的收藏中是否是个好主意:

现在我可以在这里访问 self href:

编辑(一年后)

最后我通过总是将嵌入资源的链接添加到父资源来解决这个问题。所以在上面的例子中,我的响应对象看起来像这样:

所以无论我是否嵌入了资源,我总是知道它们的位置。_links对于联系人集合,我将在数组中有指向我的集合端点的链接,并将联系人本身放在_embedded.

0 投票
2 回答
2837 浏览

rest - REST/HATEOAS API 的入口点?

我已经开始设计一个 API,并决定尝试使其符合 REST/HATEOAS。API 的入口点应该是什么?

这似乎是一个常见的问题,GET /但从我读过的内容来看,使用它在逻辑上可能更有意义OPTIONS /,因为实际上没有/用于检索的资源。

我在这里给出了这两个例子,使用JSON 的HAL语法作为超媒体格式。

得到 /

要求:

回复:

选项 /

要求:

回复:

0 投票
1 回答
3164 浏览

json - 如何使用 Spring Hateoas 和 HAL 向链接添加附加属性?

我正在使用配置了 @EnableHypermediaSupport(type = HAL) 的 Spring Boot 和 Spring Hateoas。虽然这在基本场景中工作正常,但我希望能够向链接添加其他属性。例如,很容易返回将呈现如下链接的链接:

我想要做的是为 something rel 中的对象添加更多属性。例如:

在不创建自己的 DTO 的情况下,最好的方法是什么(最好使用 ControllerLinkBuilder)?我尝试创建自己的 Link 子类并为名称(以及 getter 和 setter)添加字段,但它们似乎被忽略了。

0 投票
4 回答
8607 浏览

json - 带有 AngularJS 前端的 SPRING-DATA-REST 后端

是否有任何前端应用程序示例使用用 angularJS 编写的 Spring-data-rest 后端的 RESTful 服务。

0 投票
1 回答
1365 浏览

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 代码,但没有保存实体。

有人试过了吗?

0 投票
2 回答
3732 浏览

hateoas - 如何使用 Spring-hateoas 使用“templated:true”构建 HAL 链接?

我试图弄清楚如何使用templated: true. 如果我使用

和字符仍然被编码{。知道如何通过其 API}使用 Spring-hateo 构建模板 URL 链接吗?0.10.0.RELEASE

谢谢。

0 投票
2 回答
4632 浏览

json - 为什么仅为 POST 请求/201(已创建)响应设置 HTTP 位置标头?

暂时忽略 3xx 响应,我想知道为什么 HTTP 位置标头仅与 POST 请求/201(已创建)响应一起使用。

来自RFC 2616 规范

对于 201(已创建)响应,位置是请求创建的新资源的位置。

这是一种广泛支持的行为,但为什么不应该将它与其他 HTTP 方法一起使用呢?以JSON API 规范为例:

它为 JSON 有效负载中的当前资源定义了一个自引用链接(对于 RESTful API 来说并不少见)。此链接包含在每个有效负载中。规范说,如果您通过 POST 创建新文档并且该值与有效负载中的自引用链接相同,则必须包含 HTTP 位置标头,但这在 POST 中需要。如果您可以只使用 HTTP 位置标头,为什么还要为自引用链接使用自定义格式?

注意:这并不特定于 JSON API。HALJSON 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,它将不包含链接。

0 投票
2 回答
1349 浏览

rest - 将 HAL 词汇与 JSON-LD 结合使用

我想知道,有没有办法将 HAL 概念与 JSON-LD 一起使用?

我有当前的 jsonld 文档:

但我不知道如何定义 that hrefhas a @typeof @id,依此类推...

有没有办法基于 RDF(S) 定义 HAL 词汇并以某种方式将其导入到我的 jsonld 文档的@context 中,或者我应该做其他事情吗?
(我试图用各种属性来描述超链接,比如链接关系、HTTP 方法、接受的媒体类型、语言、IRI 模板、输入字段等......所以@id类型不足以让我描述链接。)