如何为RESTful Web服务创建自定义媒体类型(application/vnd)?

Joh*_*oDo 33 media rest hateoas restful-architecture hypermedia

我现在正在玩REST,并认为我正确地实现了HATEOAS,只是为了让所有概念都正确.

为此,我想创建自己的媒体类型(application/vnd[...]+xmlapplication/vnd[...]+json).

第一个问题:媒体类型是否定义了我的服务器和客户端之间的合同?

媒体类型将定义我的消息格式,因此我需要添加XML模式和JSON模式以配合新的媒体类型(以便REST客户端知道消息中的内容以及要发回的内容).

我已经在网上做了一些研究,但缺少一个人如何做到这一点的细节.它是否只涉及编写详尽的规范/文档或是否有一些技术步骤来实现?(我不需要在IANA注册吗?)

如何application/vnd创建一个全新的功能 - 媒体类型?你需要照顾什么才能让客户正确使用它?

ios*_*seb 26

@JohnDoDo

第一个问题:媒体类型是否定义了我的服务器和客户端之间的合同?

是的,媒体类型是合同的一部分.与SOAP(即WSDL)不同,REST API中的契约不是静态的.合同由底层协议(即HTTP),URI和媒体类型的组合定义(不禁止一起使用多种媒体类型).媒体类型定义数据模型,处理模型,超媒体控件(即带注释的链接,输入表单等等),并支持包含由链接关系,元素名称,ID,类名等描述的其他应用程序特定信息.

媒体类型将定义我的消息格式,因此我需要添加XML模式和JSON模式以配合新的媒体类型(以便REST客户端知道消息中的内容以及要发回的内容).

您只需要定义涵盖文档结构的通用模式.您不需要为特定消息定义单独的模式.您的消息必须位于媒体类型定义的结构中.

如何创建一个全新的功能 - 应用程序/ vnd媒体类型?你需要照顾什么才能让客户正确使用它?

  1. 描述它(即写格式规范);
  2. 在IANA注册:http://www.iana.org/cgi-bin/mediatypes.pl在vnd.*tree下注册媒体类型需要将近一周的时间进行注册.