每个下拉列表的单独 HTTP 请求还是对胖 FormViewModel 的单个请求?

问题描述 投票:0回答:1

如果用于创建项目的视图包含一些带有来自服务器的值的下拉框/复选框/任何内容,它是否应该发送单独的请求来用值填充这些控件(每个数据集合一个请求),或者最好有一个 API 端点,它返回在前端填写表单所需的所有数据?

为了简单起见,我在这里模拟了一个例子:假设我们正在为一家汽车服务公司构建一个应用程序,客户可以在其中进行预约:

如果前端应用程序向

api/models
api/services
发出 2 个获取请求,或者可以在单个响应中从服务器返回这些集合(来自
api/appointments/createformdata
),对此的最佳实践是什么?

asp.net angular api-design software-design
1个回答
0
投票

好吧,因为在您的示例中,两个组合框都需要值,那么我将在第一页加载时加载。除非这些组合框依赖于表单中的数据,否则不需要单独的请求,在这种情况下,您别无选择,只能等待用户输入来确定。

那么,假设您有两个组合框,第二个组合框由第一个组合选项级联?好吧,第一个组合框不会改变 - 所以在页面加载时加载它,无论如何你都必须这样做。编写单独的事件或代码来加载必须首先加载的第一个组合是没有用的。

但是,第二个组合框?好吧,既然它的值是基于第一个值,那么你又别无选择,不是吗?

所以,我没有看到任何真正的用例,如果两个组合框彼此独立,那么我几乎没有理由需要单独的请求,并且只需在第一页加载时加载两个组合框这里还不够吗? (那么您不需要任何单独的请求)。

现在,如果存在某种选项卡或 UI,并且用户无法立即看到或使用组合框,或者甚至可能永远不会从选项卡控件中选择某些选项卡?好吧,在这种情况下,您可以通过不填写组合框来加快页面加载速度,直到用户到达表单的该部分(可能是一些弹出对话框,或者可能是某种向导步骤)。

但是,再一次,如果两个组合框不相互依赖呢?然后我认为没有理由使用两个请求或事件来加载它们。但话又说回来,这又会引出一个问题:你过去是如何加载组合框的?

我的意思是,如果每个组合框都是一些ajax调用,那么继续使用其中两个,并保留两个请求。因为尝试合并或将两个 ajax 调用作为一个调用来填充两个组合框是一种痛苦,并且不遵循重用设计模式。结果是代码混乱,更糟糕的是迫使你编写做两件事的代码。

我的意思是,如果您构建了一个很好的通用例程来调用+填写组合框,那么继续使用该代码来填写第二个。我不会炸掉非常好的工作代码来以某种方式填写页面上的两个简单的组合框,并尝试使用一个请求来从组合框中进行归档。

正如我所说,如果组合框从页面加载开始就处于普通视图中,那么第一页加载时的代码隐藏就是执行此操作的位置,除非出现一些相当大的性能问题。因此,您现在没有任何单独的请求来填写组合,是吗?

但是话又说回来,组合框最适合 30 个,也许 50 个选择,之后,您需要不同的 UI,因此,无论哪种方式,您都不会遇到性能问题,你是吗?

如果您正在尝试修复或避免性能问题?然后你在组合框中放入了太多的选择,这是错误的 ui 选择,然后再一次,你就没有这个问题了,不是吗?

© www.soinside.com 2019 - 2024. All rights reserved.