似乎大多数流行的 RESTful API 更喜欢子域而不是子目录:
- api.twitter.com
- api.linkedin.com
- api.foursquare.com
- 图.facebook.com
我想知道这背后是否有任何技术论据。
这是一个负载平衡的事情。
twitter.com 有地址 199.59.150.39
twitter.com 有地址 199.59.149.230
twitter.com 有地址 199.59.150.7
api.twitter.com 有地址 199.59.150.9
api.twitter.com 有地址 199.59.149.232
api.twitter.com 有地址 199.59.148.20
api.twitter.com 有地址 199.59.148.87api.linkedin.com 的地址为 216.52.242.83
linkedin.com 的地址为 216.52.242.86api.foursquare.com 的地址为 50.19.210.39foursquare.com
的地址为 50.16.220.173graph.facebook.com 的地址为 66.220.146.87
facebook.com 的地址为 66.220.158.11
facebook.com 的地址为 69.171.229.11
facebook.com 的地址为 69.171.242.11
facebook.com 的地址为 66.220.149.11
当您在客户端而不是代理处将 Web 与 API 分开时,它确实有助于稳定性。例如,Twitter 自己的网站运行在 Ruby 上,而后端主要是用 Scala 编写的。代理可以路由这两个,但它需要到 API 和主站点的大量连接,导致连接池大两倍。
另一个优点是,当您的 API 出现故障时,该站点仍然可以工作(不适用于 Twitter,因为该站点是在 API 之上构建的)。
需要考虑的是跨域 AJAX 调用。如果您在一个网站上domain.com
,您不能对sub.domain.com
.
如果您希望 API 服务使用另一台服务器(大型)api.domain.com
更好,但您希望 AJAX 在中小型或小型domain.com/api
更好。