我喜欢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
任何?
答案 0 :(得分:3)
首先,为什么要通过媒体类型指定格式?
是的,您可以拥有链接格式的约定,但是,只有在解压缩HTTP消息的主体后才能发现任何约定。由于媒体类型是标题,因此可以作为整个单元接受或拒绝消息正文。这使得处理请求对于不支持所提供的媒体类型的消费者更有效。
应用/ vnd.me.v1.hal + JSON
据我所知,媒体类型可以限定在适合您所描述的API的级别。因此,您可以选择为单个表示形式提供媒体类型,为一组表示全部遵循相同服务的表示,或为整个组织提供单一媒体类型。
This is a good SO post考虑媒体类型: