8

我喜欢 REST HATEOAS 的概念,即通过超链接让您的 API 可被发现。人们喜欢使用 ATOM 格式的 XML 链接,您甚至可能不需要对 API 进行版本控制。但是,我只在做 JSON,我想对我的 API 进行版本控制并且仍然做 HATEOAS。

似乎最好的做法是使用供应商媒体类型,application/vnd.me.v1+json但所有这些都在讨论 JSON 中的超链接没有格式,以及 HAL、JSON+Colleton 和 Siren 等具有自己的媒体类型的东西。

所以,这是我的困惑。首先,为什么要通过媒体类型指定格式?为什么在 JSON 中包含链接不能只是客户遵循的约定?hm-json 浏览器不就是这样发现链接的吗?

而且,如果必须将其定义为媒体类型,那么这样的事情是否有效?

application/vnd.me.v1.hal+json

任何人?

4

1 回答 1

5

首先,为什么要通过媒体类型指定格式?

是的,您可以对链接的格式有一个约定,但是,只有在解压缩 HTTP 消息的正文后才能发现任何约定。由于媒体类型是标头,因此消息的主体可以作为一个整体被接受或拒绝。对于不支持所提供媒体类型的消费者,这使得处理请求更加高效。

应用程序/vnd.me.v1.hal+json

据我了解,媒体类型可以限定为适合您所描述的 API 的级别。因此,您可以选择为单个表示、一组都遵循相同服务的表示或整个组织的单一媒体类型选择一种媒体类型。

考虑到媒体类型,这是一篇很好的 SO 帖子:

于 2013-01-05T20:58:56.687 回答