1、使用route和QueryString接收GET请求参数
GET请求的URL:
http://contoso.com/api/pets/2?DogsOnly=true
接收参数的Action方法:
[HttpGet("{id}")]
public ActionResult<Pet> GetById(int id, bool dogsOnly)
模型绑定将经历以下步骤:
1) 查找的第一个参数GetByID,即名为的整数id。
2) 浏览HTTP请求中的可用源,并id在路由数据中找到="2"。
3) 将字符串"2"转换为整数2。
4) 查找的下一个参数GetByID,即名为的布尔值dogsOnly。
5) 浏览源并在查询字符串中找到“DogsOnly = true”。名称匹配不区分大小写。
6) 将字符串"true"转换为boolean类型的true。
模型绑定目标是简单类型的方法参数。目标也可以是复杂类型的属性。成功绑定每个属性后,将对该属性进行模型验证。将哪些数据绑定到模型以及任何绑定,或验证错误的记录存储在ControllerBase.ModelState或PageModel.ModelState中。要确定此过程是否成功,应用程序将检查ModelState.IsValid标志。
2、对于不同的ContentType接收POST请求的参数
1) 对于请求ContentType为'application/x-www-form-urlencoded; charset=utf-8'
接收的方法
POST /api/Person/UnProtected HTTP/1.1
Host: localhost:5000
Accept: application/json, text/javascript, */*; q=0.01
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
FirstName=Andrew&LastName=Lock&Age=31
接收参数的Action方法:
public class PersonController : Controller
{
[HttpPost]
public IActionResult Index([FromForm]Person person)//[FromForm]可省略
{
return Json(person);
}
}
2) 对于请求ContentType为'application/json; charset=utf-8'
接收的方法
POST /api/Person/UnProtected HTTP/1.1
Host: localhost:5000
Accept: application/json, text/javascript, */*; q=0.01
Content-Type: application/json; charset=UTF-8
{"FirstName":"Andrew","LastName":"Lock","Age":"31"}
接收参数的Action方法:
public class PersonController : Controller
{
[HttpPost]
public IActionResult Index([FromBody] Person person)
{
return Json(person);
}
}
标签说明:
[FromQuery]: 从查询字符串中获取值。
[FromRoute] : 从路线数据获取值。
[FromForm] : 从发布的表单字段中获取值。
[FromBody] : 从请求主体获取值。
[FromHeader] : 从HTTP标头获取值。