MVC Controller仍然是我们推荐的结构,它通用,灵活,稳定,但目前不支持AOT。
以下是控制器应该做的事情:
Manager,来处理业务逻辑。以下是不应该出现在控制器中内容:
DbContext访问数据库。一句话概念,除了应该做的事情,其他的都不建议直接在控制器中实现。因为在复杂场景下,控制器本身就需要处理很多事情。
Note
控制器接口,尽可能只表达与接口约定相关的内容,业务实现应该通过调用Manager去实现,这样能够保持代码的整洁和可维护性。
这不是强制要求,但建议遵循这个原则。
ActionResult<T>作为接口返回内容,不要自定义包装类。Problem()方法来返回错误响应。BusinessException异常来抛出错误信息。Problem和BusinessException都支持自定义错误码。
ApiResponse<T>Note
直接使用标准的HTTP状态码,能够最大限度兼容各种客户端,避免不必要的麻烦,它与自定义业务状态码并不冲突,业务状态码可以通过Problem和BusinessException来实现,它们最终返回ErrorResult结构内容。