rest - 如何为 RESTful Web 服务创建自定义媒体类型(应用程序/vnd)?

标签 rest media restful-architecture hateoas hypermedia

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

为此,我想创建自己的媒体类型( application/vnd[...]+xmlapplication/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?


  • 描述它(即编写格式规范);
  • 向 IANA 注册:http://www.iana.org/cgi-bin/mediatypes.pl在 vnd.* 树下注册媒体类型需要将近一周的时间来注册。
  • 关于rest - 如何为 RESTful Web 服务创建自定义媒体类型(应用程序/vnd)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14685672/

    相关文章:

    node.js - Req.body 在 node.js 中不可迭代

    java - 使用元数据唯一标识文件

    javascript - navigator.mediaDevices.getUserMedia API 拒绝错误 "NotReadableError: Concurrent mic process limit."

    rest - 有没有更好的安静界面?

    java - Spring Controller 中Post方法的请求体

    rest - 使用 curl 和 TLS 1.2 两种方式调用 api,使用实体的公共(public)证书

    java - Jersey (Jax-RS) 和 EL

    ios - MPMediaPickerController 显示已删除的歌曲

    javascript - mySql/Express GET 请求到 React Native 应用程序中的动态 SELECT 查询

    java - 设计一个 RESTful 网站