Web Api-每个数据库实体或每个UI屏幕的控制器

Zed*_*Bee 5 architecture asp.net asp.net-web-api

我在项目中使用Web api公开数据,这些数据又打算由移动应用程序和Web应用程序使用。

我想知道公开数据的最佳实践是什么。

例如,我有一个客户注册表格,其中捕获了包括城市和国家在内的客户详细信息。

公开数据的一种方法是为城市和国家/地区设置单独的控制器,并在客户注册表单上分别调用二者,以便为城市和国家/地区加载数据。

这种方法的问题是,如果必须加载数百个字段,则必须对api进行一百次不同的调用才能加载数据,因此应用程序将变慢。

第二种方法是设计api层,以使一个控制器公开表单/屏幕(客户注册)所需的所有查找数据(城市,国家/地区)。在这种情况下,我将必须对api进行一次调用才能获取所有必需的数据。

感觉就像,使用第二种方法,我违反了关注分离。

往哪走?

Vla*_*sny 1

不能把 UI 层和 API 层分开吗?

我认为您不应该创建 API 来获取国家/地区或其他任何侧面引用,如果它们不是您域的核心部分。

我想您应该只公开用于api/v1/users用户注册的资源端点,它需要有效的用户数据进行注册。

另外,您应该公开/usersUI,这将生成完整的 UI,包括您需要的所有列表并将其呈现给用户。该 UI 控制器将在内部调用您的域模型,而不是通过 API 来获取生成 UI 所需的所有详细信息。然后客户端的 UI 将使用用户选择的数据调用 API 控制器来注册用户。

这适合您的开发模式吗?