Web API基础
-
操作方法的返回值和状态码
-
ASP.NET Core Web API 中的操作方法的返回值如果是普通数据类型,那么返回值就会默认被序列化为JSON格式的响应报文体进行返回
-
ASP.NET Core Web API 中的操作方法的返回值同样支持
IActionResult
类型,但是IActionResult
不包含值的类型信息 -
Swagger无法从操作方法的声明中推断返回数据的类型,因此,ASP.NET Core中提供了一个泛型的
IActionResult<T>
类型 -
用法和
IActionResult
类似 -
//返回值和状态码 [HttpGet] public ActionResult<Person> GetPerson(int id) { if (id <= 0) { return BadRequest("必须是正数"); } else if(id == 1) { return new Person(1, "杨中科", 18); } else { return NotFound("人员不存在"); } }
-
在项目中,我们对于处理失败的请求都会要求统一响应报文体,这里使用来模拟一下
-
ErrorInfo类
-
public record ErrorInfo(int code,string message);
-
-
控制器
-
[HttpGet] public ActionResult<Person> GetPerson2(int id) { if (id <= 0) { return BadRequest(new ErrorInfo(1, "必须是正数")); } else if (id == 1) { return new Person(1, "杨中科", 18); } else { return NotFound(new ErrorInfo(2, "人员不存在")); } }
-
-
-
-
操作方法的参数接收方式
-
URL
-
在[HttpGet]]、[HttpPost]]等中使用占位符,比如{schoolName},捉路径中的内容,从而供Action方法的参数使用。
比如发送如此请求/Students/GetAll/school/MIT/class/A001
-
则对应的操作方法可以是``[HttpGet(“school/{schoolName}/class/{classNo}”)]`
-
捕捉的值会被自动赋值给Action中同名的参数,如果名字不一致,可以用
[FromRoute(Name="名字")]
-
演示
-
//参数获取方式: URL [HttpGet("{name}/{age}")] public ActionResult<Person> GetResult(string name , [FromRoute(Name ="age")]int id) { return new Person(1, name, id); }
-
-
-
QueryString(我们默认写法就是QueryString)
- 使用[FromQuery]来获取QueryString中的值。如果名字一致,只要为参数添加[FromQuery]即可;而如果名字不一致,
[FromQuery(Name=名字] - QueryString和Route可以混用
- 使用[FromQuery]来获取QueryString中的值。如果名字一致,只要为参数添加[FromQuery]即可;而如果名字不一致,
-
JSON报文体
-
Neb APIE的开发模式下,Json格式的请求体是主流。
-
只要声明一个模型类son请求的格式一致即可。
-
一定要设定请求头中的Content-Type为application/,json,而且数据必须是合法的json格式。
-
也是可以把从URL获取参数、从请求报文体获取数据等这些混合使用。
[HttpPost("classld/{classld)")]
public ActionResult<long>AddNew(long classld, StudentModel s)
-
-
Web API 中很少用的方式
- 从Content-Type为multipart/,form-data的请求中获取数据的[From Form]
- 从请求报文头中获取值的[FromHeader]。
-