Controller
继承自ControllerBase
,只不过增加了视图相关的方法,一般mvc项目选用Controller
而Web API项目选择ControllerBase
即可。
给服务器传递参数的时候,有URL、QueryString、请求报文体3种方式
请求路径/Student/GetAll/school/MIT/class/A001
GetAll方法添加了[HttpGet("schllo/{schoolName}/class/{classNo}")]
**结果:**schoolName=MIT和classNo=A001。如果GetAll方法的参数中有和占位符名字同名的参数,那么这个参数就会被自动赋值。如果占位符名字与参数名称不一致,则使用[FromRoute]的Name属性来设置匹配的占位符的名字,例如:
[HttpGet("schllo/{schoolName}/class/{classNo}")]
public ActionResult<Student[]> GetAll(string schoolName,[FromRoute(Name="classNo")]string calssNum) //classNum的参数想获得占位符{classNo}的值
- QueryString中的值
使用[FromQuery]
来获取,如果操作方法的参数名字和QueryString的名字一致,只需要为参数添加[FromQuery],否则,就要设定[FromQuery]的name属性指定名字
//URL的QueryString为pageNum=8&pSize=10
public ActionResult<Student[]> GetAll([FromQuery]string pageNum,[FromQuery)(Name="psize")]int pageSize)
- 请求报文体
目前JSON是主流的请求报文体格式,本文讲JSON报文体
案例:
需求:前端浏览器向服务器发送的报文体:{“name”:“qs”,“age”:“18”}
直接声明一个Person类定义Name和age两个属性
[HttpPost("classId/{classId}")]
public ActionResult<long> AddNew(long classId,Person s)
//客户端只要向/Students/AddNew/classId/8,伴随报文体{“name”:"yzk","age":"18"}
//通过classId获取8,s参数则是报文体
*注意:**一定设置请求报文头中Content-Type为application/JSON