Asp.Net Core WebAPI实战3
1.MVC模式简介
Model主要跟数据有关,数据CURD、数据的存储简单处理,DAO与DTO,Repository及缓存都可以划归Model层。
View主管视图,用于生成模板根据数据渲染并进行显示
Controller主要涉及到接受用户输入信息,调用Model层进行处理,传递给View渲染返回。
2.MVC在Asp.net Core中的变化
控制器、行为方法、路由、依赖注入、过滤器、模型绑定在MVC和WebAPI中共享使用。
3.控制器及Action方法的行为机制
在请求到达后,根据路由规则映射到具体的控制器及方法上去进行处理,过滤器优先处理原生请求:权限验证等,模型绑定及模型验证会将数据一一绑定到action方法的参数上去,格式化器会将数据按照指定的格式进行转换。Action方法可以返回视图或者响应的数据。
4.控制器的定义
a 可以继承自Controller抽象类,并按照约定以Controller结尾命名控制器类
b 可以在类上使用[Controller]注解标记为控制器,也可以使用[NonController]
5.控制器依赖注入
在控制器内部创建私有变量,一般是接口变量,通过构造函数注入具体的实例。
6.Action
Action可以使用[HttpGet] [HttpPost] [HttpPut] [HttpHead] [HtpDelete] [HttpOptions] [HttpPatch]标记请求类型
使用[NonAction]标记为非请求方法。
返回类型可以是任意的,或者IActionResult
IActionResult的具体实现类:
Ok() //返回200
NotFound() //返回404
BadRequest() //返回400
Redirect() //重定向
LocalRedirect()
RedirectToRoute()
Json() //Json数据
Content() //内容数据
View() //视图
使用IActionResult的辅助方法实例:
使用自己生成的具体实例:
7.路由
MVC有两种方法配置路由:
使用IRouteBuilder:
使用注解:
存在两种路由,绝对路由和相对路由,绝对路由从~开始,相对路由相对于控制器指定的Route注解的地址