在一个查询响应中发送不必要的数据或进行多个查询?

Sending unnecessary data in one query response or making multiple queries?

我一直在做一个项目。我一直遵循这个想法。不要在一次调用中发送所有数据。

这是一个例子,

假设有一个 API 到 return 可以添加到他们需要完成的测试的所有学生列表。

因此,在 UI 一侧,每个学生都有一个“添加”按钮,如果该学生已被分配参加考试,该按钮将显示一个弹出窗口。否则会弹出他已经完成测试

我可以加入许多 table 并在一个 api 调用中发送所有数据,同时 fetchig 学生。要么 我可以发送给学生,然后在“添加”上还有另一个 API 以确保满足上述条件。

哪种方法更好?

因为如果我在一个 api 电话中发送所有数据,可能只有少数学生被分配到测试。

检查学生是否已经被分配到后端而不是前端,并且自动以防止重复——使用数据库事务或唯一约束。

单击“添加”按钮后,无论如何都需要进行后端调用(以执行实际的添加)。如果添加失败,后端可以解释“违反唯一约束”数据库错误和return“学生已分配”消息。

对于问题的其余部分,规则很简单:不要获取超过 UI 所需的数据。

如果无论学生是否已添加,添加按钮始终显示,则无需事先检索此信息。

但是直观地指示哪些学生已被添加可能会有用,在这种情况下显然别无选择,只能检索 return 此信息到 UI。

幸运的是,GraphQL 正是这项工作的工具 - 它使 UI 可以准确请求给定页面所需的信息,而无需手动编写每个可能的查询代码。