example.com
的web应用程序。现在,我们想将这个应用程序的一部分扩展为REST API,并且正在就最佳URL模式展开讨论。我们可以使用URL模式
api.example.com
或 example.com/api
。如果有,需要考虑什么权衡?此外,关于API版本控制的方法,需要考虑哪些权衡?它可以通过URL(
v1.api.example.com
、example.com/api/v1
或一些奇怪的混合形式)来完成。或者,也可以通过HTTP请求头(或其他方式)来完成。example.com
的web应用程序。现在,我们想将这个应用程序的一部分扩展为REST API,并且正在就最佳URL模式展开讨论。api.example.com
或 example.com/api
。如果有,需要考虑什么权衡?v1.api.example.com
、example.com/api/v1
或一些奇怪的混合形式)来完成。或者,也可以通过HTTP请求头(或其他方式)来完成。这要看你的需求。
如果你使用http://api.example.com,它会将你的API作为子域名。基本上,如果你的REST服务需要被多个客户端使用,这种URL模式是很好的选择,但如果只有一个客户端连接到你的API,那么http://example.com/api/v1这种模式就更适合。不过,如果你想添加更多的API,并且有更多的客户端连接到它,最好还是使用http://example.com/api/v1这种模式。例如,考虑以下情况。
http://example.com/reportapi/apioperation?parameters
http://example.com/paymentapi/apioperation?parameters
http://example.com/searchapi/apioperation?parameters
最后但同样重要的是,PayPal使用模式http://example.com/api/v1。
https://api.[sandbox].paypal.com/v1/
这种模式。 - Greenhttps://api.github.com
- Maicon Heckhttp://api.example.com
和http://example.com/api/v1
。相反,我建议使用http://example.com/api
和内容协商进行版本控制。以下是我的想法:使用/api/
来区分API和例如在/web/
下运行的Web视图并没有什么不好的。这可以被认为是常见的最佳实践。
我不确定你是否有意,但是你的问题包括如何解决API版本控制的查询。个人认为,API版本控制不应该使用URL,因为它们旨在尽可能长时间保持稳定。Cool URIs don't change!相反,考虑使用HTTP Content-Type信息来对API进行版本控制。我在VMware documentation中发现了这种方法的使用。此外,这里有一篇相当古老但仍然有用的关于内容类型版本控制的文章,作者是Peter Williams。
这是一个权衡取舍的案例,没有单一的最佳解决方案。
例如,如果您的 http://example.com/ 通过标准网络界面和 API 提供内容,则需要类似于 http://api.example.com/api/<version>/<the usual resource pattern>
的东西,仅用于将基于浏览器的应用程序访问与 API 交互分开。这有意义吗?
例如: api.rottentomatoes.com
但是,即使您的域名专门用于 API 调用,仍然有意义使用上述模式,并将 http://example.com/ 保留用于与您的应用程序进行其他方式的交互。例如,您可能需要http://example.com/mobile/等。
api.XXXXX.com
格式。 - Arun P Johny