Is api.example.com better than example.com/api?


Is api.example.com better than example.com/api?

似乎大多数流行的RESTful API更喜欢子域而不是子目录:

  • api.twitter.com
  • api.linkedin.com
  • api.foursquare.com
  • graph.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.87

api.linkedin.com 的地址为 216.52.242.83
linkedin.com 的地址为 216.52.242.86

api.foursquare.com 的地址为 50.19.210.39
foursquare.com 的地址为 50.16.220.173

graph.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进行 AJAX 调用。

如果您希望API服务使用另一台服务器(大规模),api.domain.com更好,但您希望AJAX在中小规模domain.com/api更好。