如何给API传递数据
数据可以通过多种方式来传给API。
Bindingsource Attributes会告诉Model的绑定引擎从哪里找到绑定值。
Bindingsource Attributes:
1.[FromBody] 请求的Body
2.[FromForm] 请求的Body中的form数据
3.[FromHeader] 请求的Header
4.[FromQuery] Query string参数
eg:public async Task<ActionResult<Student>> GetStudent([FromQuery]Guid id){}
5.[From Route] 当前请求中的路由数据
eg:public async Task<ActionResult<Student>> GetStudent([FromRoute]Guid id){}
6.[FromService] 作为Action参数而注入的服务
[ApiController]
默认情况下ASP.NET Core 会使用Complex Object Model Binder,它会把数据从Value Providers哪里提取出来,而Value Providers的顺序是定义好的。
但是我们构建API是通常会使用[ApiController]这个属性,为了更好的适应API她改变了上面的规则。
[ApiController]更改后的规则
1.[FromBody] 通常是用来推断复杂类型参数的(比如使用json传递一个对象,这个对象里面有若干个属性时)
2.[FromForm] 通常用来判断IFormFile和IFormFilecollection类型的Action参数(上传文件)
3.[From Route] 用来推断Action的参数名和路由模板中的参数名一致的情况。
4.[FromQuery] 用来推断其他的Action参数。(除了上面三种之外的其他情况)。