[英]Laravel backend, Vue frontend, api best practises?
我建立簡單的SPA。 我在后端使用 laravel,在前端使用帶有 vuex 的 Vuex 和路由器。 假設我有端點:
/users/1/conversations/1
我已經定義了用戶和對話之間的關系。 Controller 方法是這樣的:
User::findOrFail(id)->conversations()->with('user')->get();
它給出了示例 output:
[{
id: 1,
title: 'lorem ipsum'
users: [{id: 1, name:'John'}, {id: 2, name: 'Bob'}]
},
id: 2,
title: 'lorem ipsum'
users: [{id: 1, name:'John'}, {id: 2, name: 'Bob'}, {id: 3, name: 'Ann'}]
}]
並且重復參與許多對話的用戶的數據。 在上面的例子中它是: {id: 1, name:'John'}
我認為數據重復不是一個好主意。 也許我應該做這樣的事情:
{
conversations: [{
id: 1,
title: 'lorem ipsum'
users: [1,2]
},
id: 2,
title: 'lorem ipsum'
users: [1,2,3]
}],
unique_user_ids: [1,2,3]
}
它有任何意義嗎?
除非您擁有大量重復的大數據,否則數據重復通常不是問題。 如果您關心性能,問題將是查詢次數和 memory 的總使用量。 要檢查它們,您可以使用Laravel Debugbar 。
實際上,如果你單獨獲取用戶,你會執行太多額外的查詢,這會降低性能。
如果您計划在顯示會話時獲取用戶數據,由於數據量較小,它會提高頁面加載性能,但在這種情況下,您的服務器將不得不響應過多的額外請求,這可能會產生其他性能問題。
所以,和往常一樣,這取決於...
就個人而言,我總是從絕對必要的數據開始。 所有其他的東西都可以按要求或時間交付。 所以,第二個選項看起來更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.