2012-04-26 81 views
3

好像深受廣大RESTful API中的子域喜歡在子目錄:api.example.com比example.com/api更好嗎?

  • api.twitter.com
  • api.linkedin.com
  • api.foursquare.com
  • graph.facebook .com

我想知道是否有任何技術理由背後。

+10

我能想到的一個原因是,您可以使用子域方法將API請求路由到不同的服務器,而不必在使用'/ api'時使用代理或負載平衡器。這對於大量的API來說尤其重要。 – drew010 2012-04-26 15:49:00

回答

3

這是一個負載平衡的東西。

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之上的)。

0

需要考慮的事情是跨域AJAX調用。如果您在網站domain.com上,則無法對sub.domain.com進行AJAX調用。

+3

當然可以。把['document.domain ='domain.com';'](https://developer.mozilla.org/en/DOM/document。域名),並且你的瀏覽器會把它們看作是'domain.com'。你也可以使用JSONP。 – 2012-04-26 15:53:54

0

如果你想要API服務使用另一臺服務器(大規模)api.domain.com比較好,但是你希望AJAX在中小規模domain.com/api更好。

+0

儘管AJAX需要一個小小的'document.domain'破解,它還是可以用於子域。 – 2012-04-26 16:07:02