如何给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参数。(除了上面三种之外的其他情况)。

posted @ 2020-01-09 10:44  名字已被使用N次  阅读(832)  评论(0编辑  收藏  举报