簡體   English   中英

Laravel 后端,Vue 前端,api 最佳實踐?

[英]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'}我認為數據重復不是一個好主意。 也許我應該做這樣的事情:

  1. 修改 controller 方法以生成此 output:
{ 
conversations: [{
id: 1,
title: 'lorem ipsum'
users: [1,2]
},
id: 2,
title: 'lorem ipsum'
users: [1,2,3]
}],
unique_user_ids: [1,2,3]
}
  1. 然后在我的前端調用兩個不同的 axios.get:一次用於對話(/users/{id}/sessions),n 次用於每個用戶(/user/{id})。

它有任何意義嗎?

除非您擁有大量重復的大數據,否則數據重復通常不是問題。 如果您關心性能,問題將是查詢次數和 memory 的總使用量。 要檢查它們,您可以使用Laravel Debugbar

實際上,如果你單獨獲取用戶,你會執行太多額外的查詢,這會降低性能。

如果您計划在顯示會話時獲取用戶數據,由於數據量較小,它會提高頁面加載性能,但在這種情況下,您的服務器將不得不響應過多的額外請求,這可能會產生其他性能問題。

所以,和往常一樣,這取決於...

就個人而言,我總是從絕對必要的數據開始。 所有其他的東西都可以按要求或時間交付。 所以,第二個選項看起來更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM