2013-06-22 20 views
0

我製作的webapp是中型的,它將是一個單頁靜態JS + HTML應用程序(由Backbone和nginx提供)訪問一個API,託管在一個合適的Web服務器上。網站和API應該有不同的主機名?

API應該位於不同的主機名下,還是相同的主機名,但路徑不同?這些選項有哪些可能的利弊&?這兩個選項都可行,感謝nginx。

+0

應用程序如何訪問「API」?您使用「API」來允許與您的應用進行交互......我不確定如何閱讀您的問題。 – icedwater

+0

對不起,我的意思是:靜態部分(HTML&JS&Backbone.js)將調用API的AJAX查詢。這就是「應用程序將訪問API」 – alexk

+0

感謝您的澄清,我有種想法,因爲@TVK能夠回答你的問題。我只是覺得它可能更清晰。 – icedwater

回答

1

我會建議使用直觀的分隔環境。分割訪問位置(如example.comapi.example.com)可以讓主機名稱描述每個環境的用途。將它們分開可以保持組織和清晰,同時對每個主機名使用相同的主機名可能會導致混淆,從而導致出現什麼樣的請求。

使用example.com/api也是可能的,但也可能導致將來的目錄也用於其他事情。例如,example.com/newfeature也有類似example.com/newfeature/api的目錄嗎?

最後,這都是個人喜好的問題。選擇適合您環境的清晰方式。

0

我認爲你的問題有點不相干,只要你的代碼是靈活的關於api的基礎網址。確保你可以配置你的代碼(包括javascript和後端),以便所有的api URL都與某個單獨的配置參數有關,並且你可以靈活地將你的api服務放到你想要的或者需要放置的地方。

0

我傾向於認爲將所有內容放在同一主機名上可能是個好主意,因爲用戶可能禁用了第三方Cookie,因此關閉瀏覽器後API服務器將無法識別您。在任何人告訴我之前,我應該讓主網站提供cookie,而讓我告訴你,我希望主網站是完全靜態的HTML/JS文件,因此他們無法爲httpOnly cookie服務,這是我喜歡的一種餅乾。

+0

避免單獨主機名的另一個原因是爲了避免API請求發生之前發生的CORS飛行前OPTIONS請求。如果每個API請求都具有不同的URL端點,那麼在飛行前請求會使Web應用程序相當慢。 – alexk

相關問題