绑定是在Web API调用控制器操作方法时为参数设置值的过程。
Web API方法具有不同类型的参数以及如何自定义绑定过程。
如果参数是int,bool,double等简单类型,则Web API会尝试从URI(从路由数据或查询字符串)获取值。
如果参数是Customer,Employee等复杂类型,则Web API框架会尝试从请求正文中获取值。
我们可以使用[FromBody]和[FromUri]属性来更改参数绑定过程的默认行为。
FromUri -
如果参数是简单类型,则Web Api尝试从URI中获取值
.NET原始类型,例如double,DateTime,GUID字符串,可以从String类型转换为任何类型
public Student Get(int id){}
如果参数类型为Complex类型,则Web Api将尝试绑定消息正文中的值。
Public Student Post(Employee employee){}
要强制Web API从URI读取复杂类型,请将[FromUri]属性添加到参数
使用[FromUri]属性强制Web Api从QueryString获取复杂类型的值。
public Student Get([FromUri] Employee employee) public HttpResponseMessage Get([FromUri] Employee employee) { ... }
使用[FromBody]属性从请求正文中获取基本类型的值,与默认值相反
不可以,单个操作不允许使用多个FormBody。
要强制Web API从请求正文中读取简单类型,请添加[FromBody]
在此示例中,Web API将使用媒体类型格式化程序从请求正文中读取name的值
public Student Post([FromBody] string name]){...} public HttpResponseMessage Post([FromBody] string name) { ... }