Php api.example.com比example.com/api好吗?
大多数流行的RESTful API似乎更喜欢子域而不是子目录:Php api.example.com比example.com/api好吗?,php,ruby,api,rest,subdomain,Php,Ruby,Api,Rest,Subdomain,大多数流行的RESTful API似乎更喜欢子域而不是子目录: api.twitter.com api.linkedin.com api.foursquare.com graph.facebook.com 我想知道这背后是否有技术上的争论。需要考虑的是跨域AJAX调用。如果你在一个网站domain.com上,你不能对sub.domain.com进行AJAX调用,这是一个负载平衡的问题 twitter.com的地址是199.59.150.39 twitter.com的地址是199.59.149
- api.twitter.com
- api.linkedin.com
- api.foursquare.com
- graph.facebook.com
我想知道这背后是否有技术上的争论。需要考虑的是跨域AJAX调用。如果你在一个网站
domain.com
上,你不能对sub.domain.com
进行AJAX调用,这是一个负载平衡的问题
twitter.com的地址是199.59.150.39twitter.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之上的)。如果你想要API服务,使用另一台服务器(大规模)
API.domain.com
更好,但是您希望中小型domain.com/api
中的AJAX更好。我能想到的一个原因是,您可以使用子域方法使用DNS将api请求路由到不同的服务器,而不必在使用/api
时使用代理或负载平衡器。这对于非常大容量的API尤其重要。当然可以。放在这两个文件的顶部,您的浏览器会将它们视为位于domain.com
上。您也可以使用JSONP.AJAX来处理子域,尽管它需要一个小的document.domain
hack。