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

似乎最佳实践似乎是使用application/vnd.me.v1+json中的供应商媒体类型,但随后所有这些都讨论了JSON中超链接的无格式以及诸如HAL,JSON + Collecton和Siren之类具有自己的媒体类型的东西。 。

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

而且,如果必须将其定义为媒体类型,是否可以执行类似的操作?

application/vnd.me.v1.hal+json


任何人?

最佳答案

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


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


application / vnd.me.v1.hal + json


据我了解,媒体类型的范围可以调整到适合您描述的API的水平。因此,您可以选择具有单个表示形式的媒体类型,都遵循相同服务的一组表示形式,或者整个组织的单个媒体类型。

This is a good SO post考虑媒体类型:

09-28 07:18