api - 如何将供应商特定的 MIME-TYPES 用于 "private-labeled"REST API

标签 api rest mime-types content-type white-labelling

我正在开发一个 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/

相关文章:

coldfusion - 在 ColdFusion 8 中创建下载页面

http - 是否有 MIME 类型告诉浏览器 "don' t 尝试检测类型,仅显示为文本”?

java - 我们可以做任何我们使用 keytool 和 java.security api 的事情吗,比如 KeyPairGenerator 等

api - 提升 REST 服务无法识别 PUT 请求

c# - IIS 上使用 Autofac 的 WebApi REST 服务,首次调用时出错

javascript - Delphi Datasnap ISAPI 模块上的 CORS 问题

api - 使用 SSL 的 Rest API 加密

IIS:如何获取元数据库路径?

node.js - 使用 Node Js 将普通图像转换为渐进图像

.net - 迁移分析管理客户端登录