2017-03-16 65 views
0

例如:我們有一個用戶模型,它又有幾個公司實體。我看到2個解決方案:從REST API獲取相關/嵌套數據的最佳做法是什麼?

1)古典。做一個像API:

/users/ 
/users/3/ 
/users/3/companies/ 

,並分別出具/userscompanies請求。但是,如果我們需要在一個視圖中(在Angular2上)同時擁有user和他/她的companies信息 - 我們需要向服務器發送2個請求。

2)將相關/嵌套的數據放在level-1對象模型中。在請求中:

/users/3/ 

服務器將提供有關用戶以及他的公司的信息。在這種情況下,我們獲得1個請求的所有信息。但同樣,該公司擁有無限數量的存儲實體。如果在一個單獨的視圖中需要它們會怎樣?

我更傾向於第一種選擇,但我對REST風格的描述感到困惑:「視圖必須完全代表資源。」滿足這一要求可能會導致將資源劃分爲兒童資源,並因此導致較小的表示。 「

請幫助我的建議,我懷疑缺乏經驗在這種情況下,什麼樣的決定是正確的。哦,是的,我忘了,使用Django-Rest-Framework的Django(Python)Backend - 所有這些是一個SaaS爲〜1000個用戶。

回答

0

Approach 1是對REST的理想的方法。但是,當涉及到設計的API在UI上顯示的信息它涉及的不僅僅是分割的API按照資源更多。

所以我建議在User API中包含Company信息但是正如你所建議的Company對象可以有很大的列表的Storage對象,在這種情況下,我會建議只包含Company模型的必要和充足字段到User API。這樣你就可以呈現一個視圖。然後當用戶擴展Company部分時,您可以從/company/<id> API中拖出剩餘的字段。

這樣你就會有較小的API調用,用戶不會尋找Company的細節,你的API也會輕量級。

相關問題