如何将特定于供应商的MIME-TYPES用于"私有标记"REST API

bha*_*ard 6 api rest content-type white-labelling mime-types

我正在开发一个RESTful API.目前我正在考虑使用特定于资源的供应商MIME类型来传达语义和含义,以及充当客户端和服务器之间的"契约".

因此,例如application/vnd.mycompany.person + xml意味着有问题的数据是代表一个人的xml.

我要求使这个API"私有标记",这意味着经销商可以反过来向他的客户提供API,而他的客户不知道这是我公司的服务.这样做的方式是我的公司将主要api托管在某种通用URL上,即www.example.com/api然后我的公司会使用CNAME将我们的域名指向该URL,我们的经销商可以做相同.

在内部,所有资源链接都是API根相对的,因此会尊重正在使用的实际URL.

但是,我不想理解/支持任意供应商特定的MIME类型,那么上面示例MIME类型的"mycompany"部分应该是什么?

Avi*_*lax 4

HTTP 规范

\n\n
\n

不鼓励使用非注册媒体类型。

\n
\n\n

我曾经在我的平台中使用 \xe2\x80\x9ccustom\xe2\x80\x9d 媒体类型,但它导致用户代理(浏览器、cURL、wget 等)无法识别内容的问题。

\n\n

您可以尝试注册自定义媒体类型,但是 (A) 这需要一段时间;(B)\xe2\x80\x99d 需要很长时间用户代理才能识别该类型(如果有的话);(C) 您已表明您不希望公司名称始终存在。

\n\n

作为 \xe2\x80\x9ccustom\xe2\x80\x9d 媒体类型的替代方案,我建议使用媒体类型参数;它们\xe2\x80\x99是向媒体类型添加有关内容的补充信息的好方法。

\n\n

使用参数,您的媒体类型可以是application/xml; mycompany-schema=person,也可能只是application/xml; schema=person

\n