我們有一個單頁面應用程序(AngularJs),它使用REST API與後端進行交互。該應用程序允許每個用戶查看有關用戶所在公司的信息,但不能查看任何其他公司的數據。我們目前的REST API看起來是這樣的:RESTful如何使用子域名作爲資源標識符?
domain.com/companies/123
domain.com/companies/123/employees
domain.com/employees/987
注意:所有ID是GUID的,因此最後的終點沒有公司ID,就僱員ID。
我們最近開始致力於強制要求每個用戶訪問與用戶工作公司有關的信息。這意味着在後端我們需要跟蹤登錄用戶的身份(這是簡單的認證問題),以及確定正在訪問其信息的公司。後者不易從我們的REST API調用中確定,因爲其中一些不包含公司標識,例如上面顯示的最後一個。
我們決定不用在用戶界面中跟蹤公司ID並將它與每個請求一起發送,而是將其放在子域中。因此,假設ACME公司擁有ID = 123我們的API將發生如下改變:
acme.domain.com
acme.domain.com/employees
acme.domain.com/employees/987
這使得識別公司在後端很容易的,需要小的改動休息從我們的單頁的應用程序調用。但是,我擔心的是它打破了我們API的RESTfulness。這也可能引入一些CORS問題,但我現在沒有用例。
我想聽聽你對此的看法,以及你過去如何處理這個問題。
謝謝!
我們決定繼續使用子域方法,並遇到了管理cookie的小問題。只是認爲我會將此添加爲子域方法的另一個潛在問題。 – alecswan
有趣的是,我想我會把'餅乾'放在那個列表中,但顯然我沒有!我有一些輕微的感覺,一些聰明的屁股會馬上出現,並說如果你正確地管理你的cookies不應該是一個真正的問題。我認爲它遵循相同的原則,也就是說系統中的其他位使用域來表達額外的含義,這些含義可能會與你的相沖突。 –