asp.net - Web Api - 每个数据库实体或每个 UI 屏幕的 Controller

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

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

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

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

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

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

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

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

走哪条路?

最佳答案

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

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

我想你应该暴露api/v1/users用户注册的资源端点,它需要有效的用户数据进行注册。

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

这会适合您的开发模式吗?

关于asp.net - Web Api - 每个数据库实体或每个 UI 屏幕的 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33649401/

相关文章:

asp.net-web-api - 无法使MVC4 WebApi在JSON中包含空字段

javascript - Ajax AutoCompleteExtender 与 javascript

c# - 在 DbContext 之外延迟加载

c# - 如何为 JSON 创建通用 DataContract 类

C#:SQL "Select Top.."查询不返回任何行?

architecture - 架构设计模式

c# - Api Controller 中长时间运行的任务(使用 Web API,自托管 OWIN)

c# - 如果模型类标记为可序列化,则参数值不会映射到 Web API 中

angular - 将 SCSS 与 Angular 2/4 结合使用的架构

architecture - 领域驱动设计中的层