我正在开发一个尽可能RESTful的API(虽然不满足HATEOAS约束因此不 REST API 本身)
我正在对API进行版本控制,因为有几种方法可以做到这一点,我想我将使用Accept标头。我确实知道其他选择,但这个问题的目的不是找到一种合适的API版本。
据我所知,有两种使用Accept标头版API的方法,如here,here和here所示:
application/vnd.company.myapp-v1+json
或使用限定符
application/vnd.company.myapp+json;v=1
虽然这一点非常清楚,但我了解所有x-
个自定义内容类型都必须deprecated,而vnd.
个内容类型必须在IANA注册。
API不会也不会公开,所有使用它的客户都是在内部开发的。
正在注册自定义vnd。 IANA强制要求的内容类型?如果未注册内容类型会发生什么?
即使没有向IANA注册,我也可以简单地使用Accept标头application/vnd.company.myapp+json;v=2
吗?
由于纯粹出于版本控制目的,我需要内容协商的自定义内容类型,我可以使用application/json;v=2
之类的限定符吗?
答案 0 :(得分:3)
从我可以从https://tools.ietf.org/html/rfc6838#section-3.2读取的内容并不是强制性的,但如果您有公开的API,则鼓励它这样做。
RFC6838是关于注册新的MIME /媒体类型,以下文字对于私有API(产品)来说似乎不是问题
供应商树用于与公开相关的媒体类型 可用的产品。
公共API(产品)也不需要,就像我说的那样鼓励。
公众曝光和审查媒体类型时要注册 使用media-types@iana.org
不需要供应商树 鼓励审查邮件列表,以提高质量 那些规格。供应商树中的注册可以是
直接提交给IANA,他们将在那里接受专家审核 批准前[RFC5226]