HAL+JSON的正确媒体类型是什么?

7

我正在使用Spring创建一个RESTful服务,我对媒体类型的语法很好奇。

据我的理解,HAL+JSON的一般媒体类型是application/hal+json。同样,根据我的理解,支持HAL+JSON的供应商特定的自定义媒体类型可能是application/vnd.api.entity.hal+json。然而,我也看到过application/vnd.api.entity+hal+json。哪一个是正确的?

此外,HAL+JSON的正确通配符类型是什么?是application/*.hal+json还是application/*+hal+json?如有相关RFC的链接将不胜感激。谢谢!


“通配符类型”是什么意思? - Julian Reschke
@JulianReschke 通配符类型是类似于 application/*+json 的东西。 - Vivin Paliath
我明白了,但你想在哪里使用它?不要说在“Accept:”中。 - Julian Reschke
@JulianReschke 哦,不要放在 Accept: 里面!这是用于媒体类型转换器的,它处理将传入的 JSON 映射到 DTO(反之亦然)。 - Vivin Paliath
1个回答

7
application/vnd.api.entity+json

application/vnd.api.entity.hal+json仅在您计划提供不支持HAL的数据时才有意义。无论如何,客户端都必须知道内容的结构,而HAL是其中的一部分。

application/vnd.api.entity+hal+json是错误的。 标准指出应仅使用注册后缀。它还将它们称为“结构化语法后缀”。因此,很明显这是关于如何阅读数据而不是其含义。只允许使用一个后缀,多个后缀没有意义。

将其视为application/semantic+syntaxapplication/what's in it + how to read it


这很有道理,这也是我要走的方向。application/blah+hal+json 对我来说没有意义。此外,在我的 API 中,我的实体可能包含 HAL。 - Vivin Paliath

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接