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

Separate HTTP requests for each dropdown or a single request for a fat FormViewModel?

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

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

前端应用是否应该向 api/modelsapi/services 发出 2 个 get 请求,或者这些集合可以在单个响应中从服务器返回(来自 api/appointments/createformdata),与此相关的最佳做法是什么?

提前致谢!

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

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

然而,第二个组合框?那么,既然它的值是基于第一个,那么再一次,你别无选择,是吗?

所以,我没有看到任何实际用例,如果两个组合框彼此独立,那么我几乎看不出为什么单独的请求会被要求 ui 红色,而且仅在第一页加载时加载两个组合框在这里还不够吗? (那么您不需要任何单独的请求)。

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

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

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

我的意思是,如果您建立了一个很好的通用例程来调用 + 填写组合框,然后继续使用该代码来填写第二个。我不会破坏非常好的工作代码以某种方式在页面上填写两个简单的组合框并尝试使用一个请求从组合框中提交该文件。

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

但话又说回来,一个组合框有什么用,最多 30 个,也许 50 个选择,在那之后,你需要一个不同的 UI,因此再一次,你没有问题无论哪种方式,都可以提高性能,对吗?

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