我现在正在玩 REST,并认为我正确地实现了 HATEOAS只是为了让所有的概念都正确。
为此,我想创建自己的媒体类型( application/vnd[...]+xml
和 application/vnd[...]+json
)。
第一个问题:媒体类型是否定义了我的服务器和客户端之间的契约(Contract)?
媒体类型将定义我的消息格式,因此我需要添加 XML 模式和 JSON 模式以配合新的媒体类型(以便 REST 客户端知道消息中的内容以及发送回的内容)。
我在网上做了一些研究,但是缺少有关如何做到这一点的详细信息。它是否只涉及编写详尽的规范/文档,还是有一些技术步骤可以实现? (我不需要向 IANA 注册,对吗?)
怎样才能新的-功能齐全-application/vnd
媒体类型被创建?以及您需要注意什么才能让客户正确使用它?
最佳答案
@约翰多多
One first question: Does the media type define the contract between my server and client?
是的,媒体类型是契约(Contract)的一部分。与 SOAP(即 WSDL)不同,REST API 中的契约(Contract)不是静态的。合约由底层协议(protocol)(即 HTTP)、URI 和媒体类型(不禁止多种媒体类型一起使用)的组合定义。媒体类型定义数据模型、处理模型、超媒体控件(即带注释的链接、输入表单等),并支持包含由链接关系、元素名称、id、类名等描述的附加应用程序特定信息...
The media type will define my message formats so I need to add XML schema and JSON schema to go with the new media types (so that REST clients know what's coming in messages and what to send back).
您只需要定义涵盖文档结构的通用模式。您不需要为特定消息定义单独的模式。您的消息必须符合媒体类型定义的结构。
How can a new - fully functional - application/vnd media type be created? and what do you need to take care of so that clients can properly use it?
关于rest - 如何为 RESTful Web 服务创建自定义媒体类型(应用程序/vnd)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14685672/