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

时间:2015-11-11 11:15:49

标签: asp.net architecture asp.net-web-api

我在我的项目中使用web api来公开数据,而这些数据又是供移动应用程序和Web应用程序使用的。

我想知道公开数据的最佳做法是什么。

例如,我有一份客户登记表,我在其中捕获客户详细信息,包括城市和国家。

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

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

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

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

走哪条路?

1 个答案:

答案 0 :(得分:1)

您是否只能拆分UI和API图层?

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

我猜你应该公开api/v1/users资源端点进行用户注册,这需要有效的用户数据进行注册。

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

那套件是你的开发模型吗?