在一个查询响应中发送不必要的数据或进行多个查询?
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 可以准确请求给定页面所需的信息,而无需手动编写每个可能的查询代码。
我一直在做一个项目。我一直遵循这个想法。不要在一次调用中发送所有数据。
这是一个例子,
假设有一个 API 到 return 可以添加到他们需要完成的测试的所有学生列表。
因此,在 UI 一侧,每个学生都有一个“添加”按钮,如果该学生已被分配参加考试,该按钮将显示一个弹出窗口。否则会弹出他已经完成测试
我可以加入许多 table 并在一个 api 调用中发送所有数据,同时 fetchig 学生。要么 我可以发送给学生,然后在“添加”上还有另一个 API 以确保满足上述条件。
哪种方法更好?
因为如果我在一个 api 电话中发送所有数据,可能只有少数学生被分配到测试。
检查学生是否已经被分配到后端而不是前端,并且自动以防止重复——使用数据库事务或唯一约束。
单击“添加”按钮后,无论如何都需要进行后端调用(以执行实际的添加)。如果添加失败,后端可以解释“违反唯一约束”数据库错误和return“学生已分配”消息。
对于问题的其余部分,规则很简单:不要获取超过 UI 所需的数据。
如果无论学生是否已添加,添加按钮始终显示,则无需事先检索此信息。
但是直观地指示哪些学生已被添加可能会有用,在这种情况下显然别无选择,只能检索 return 此信息到 UI。
幸运的是,GraphQL 正是这项工作的工具 - 它使 UI 可以准确请求给定页面所需的信息,而无需手动编写每个可能的查询代码。