我认为您应该考虑使用既不http://api.example.com
也不http://example.com/api/v1
。
相反,我建议使用http://example.com/api
和内容协商进行版本控制。
以下是我的想法为什么:
使用子域:
根据URI Scheme Specification,您在 URI 的授权部分定义 API,用于定义您的主机,而不是在您的主机上定义应用程序或 API。您实际上是在为您的 API 创建一个不同的地址,这意味着身份验证可能不适用于 api.example.com,就像它对 example.com 一样。
这样做的一个正当理由可能是在为移动设备设计一个新实例时,例如 mobile.example.com,但我认为这更像是一个基础设施决策,而不是功能决策。
在主域上使用未版本控制的路径:
这里有两点信息:一是表示存在 API 资源,二是表示存在该 API 资源的版本号 (v1)。
用来/api/
区分 API 和可能在/web/
. 这可以被认为是常见的最佳实践。
我不确定您是否打算这样做,但您的问题包括有关如何解决 API 版本控制的查询。就个人而言,我认为 API 版本控制不应该使用 URL 来完成,因为它们旨在尽可能长时间地保持稳定。酷 URI 不会改变!相反,请考虑使用 HTTP Content-Type 信息来对您的 API 进行版本控制。我实际上在VMware 文档中发现了这种方法。此外,这里有一篇相当古老但仍然有用的关于内容类型版本控制的帖子,作者Peter Williams。