我有一个asp.net Core Web API,具有以下结构:
View Layer: API endpoints
|
V
Controller Layer: Controller classes implementing endpoints
|
V
Business Logic Layer: Services
|
V
Data Access Layer: Proxy classes to our backend
Run Code Online (Sandbox Code Playgroud)
有一系列端点都遵循这种结构.大多数API纯粹是对后端的数据查询,但是一些API也允许调用客户端提交数据.
我正在努力寻找一种简洁的方法来整合必须在此提交的数据上进行的各种验证.
我最初的意图是Controller层非常简单,并将所有真正的"工作"(包括验证)交给服务层,而Controller层只负责发送适当的HTTP响应.不过,我的问题是,在服务完成所有实际工作的情况下,如何最好地向Controller回复应该返回的内容.
我可以使用数据注释捕获一些基本验证,并且在大多数情况下,在数据验证方面可能实际上足够.但这不包括其他问题,如更复杂的验证,或服务/数据访问层WRT读/写等的失败.
我仔细考虑过的一些想法:
使服务层知道IActionResult接口,并使其负责确定返回调用客户端的内容.然后将控制器和服务层混合在一起,但使控制器层非常精简.
为各种Services调用创建各种"OperationResults"对象,这些对象将封装任何错误消息,异常,错误代码等,由Controller层解释以确定要发送回客户端的http响应.这是一个更清晰的分离,因为Service层根本不会与http代码混合,但是然后将Controller类转换为一组大的开关以确定要发回的内容.
根据在Controller与服务级别捕获的有意义分离验证.例如,传递一个null对象进行保存的控制器应该清楚地拒绝它并返回BadRequest(),但是当服务层有自己想要检查它的原因时,在那里添加检查似乎是多余的.
我确实对.net web API和.net核心有点新手,所以如果有一些明显的功能可用,我没有利用,我很想知道.
任何建议将不胜感激,谢谢.
在Eclipse中,所有皮棉错误或警告都将在代码文件中高亮显示,同时在包树中也将带有图标的高亮显示带有警告/错误的文件。
尽我所能,我找不到在Android Studio中复制此功能的方法。有人知道这样做的方法吗?有没有我可能找不到的IntelliJ插件?