我正在开发一个 RESTful API。目前,我正在考虑使用特定于资源的供应商 MIME 类型来传达语义和含义,以及充当客户端和服务器之间的“契约(Contract)”。
因此,例如 application/vnd.mycompany.person+xml 将意味着有问题的数据是代表一个人的 xml。
我要求将此 API 设为“私有(private)标签”,这意味着经销商可以反过来将 API 提供给他的客户,而他的客户并不知道这是我公司的服务。这样做的方式是我的公司将主 api 托管在一种通用 url,即 www.example.com/api 然后我的公司将使用 CNAME 将我们的域名指向该 url,我们的经销商可以这样做相同。
在内部,所有资源链接都是相对于 API 根的,因此会尊重正在使用的实际 url。
但是,我不想理解/支持任意供应商特定的 MIME 类型,那么上面示例 MIME 类型的“mycompany”部分应该是什么?
最佳答案
HTTP 规范 says :
Use of non-registered media types is discouraged.
我曾经在我的平台中使用“自定义”媒体类型,但这会导致用户代理(浏览器、cURL、wget 等)无法识别内容。
您可以尝试注册您的自定义媒体类型,但是 (A) 这需要一段时间; (B) 用户代理需要很长时间才能识别类型,如果有的话; (C) 您已表示您不希望公司名称始终出现。
作为“自定义”媒体类型的替代方案,我建议使用媒体类型参数。它们是向媒体类型添加有关内容的补充信息的好方法。
使用参数,您的媒体类型可以是
application/xml; mycompany-schema=person
或者也许只是 application/xml; schema=person
.
关于api - 如何将供应商特定的 MIME-TYPES 用于 "private-labeled"REST API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6918025/