目录
背景
例子
兴趣点
ASP.NET提供了将值发送到控制器上的方法的能力。这称为绑定。绑定的两种主要类型是参数和模型。本文是关于使用这两种类型的绑定的快速回顾。
背景ASP.NET WebAPI遵循这些默认的绑定规则:
- 如果参数是原始类型,例如整数、字符串或布尔值,它将首先尝试使用参数绑定,而没有任何其他指令。
- 在没有任何其他指令的情况下,复杂类型将默认从请求正文中读取值。
- 复杂类型可以在方法参数中使用带有正确指令的参数绑定。
ASP.NET WebAPI支持两种不同的指令来指示数据应该从哪里绑定:
- [FromUri]——该指令告诉方法可以在请求URL中找到数据。
- [FromBody]——该指令告诉方法可以在请求正文中找到数据。
下面是不同类型绑定的两个简单示例,第一个来自URI,第二个来自请求正文:
public ProductController : ApiController
{
[HttpGet]
[Route("Product/{id}")]
public HttpResponseMessage GetProductById([FromUri] int productId )
{
// Code here for the controller method
}
}
该Request URL看起来类似于https://localhost/api/product/100。
public ProductController : ApiController
{
[HttpPost]
[Route("Product")
public HttpResponseMessage AddProduct([FromBody] Product newProduct )
{
// Code here for the controller method
}
}
该Request在使用postman的时候是这样的。
一般情况下,不严格来讲,用于Put和Post的HTTP谓词在请求的主体中使用模式,因为他们要么创建或更新资源,有时可能需要一个较大的模型,而在 URI中这个模型很笨重。
HttpGet和Delete动词通常将使用URI,一般来说,它们检索或删除通常可以由URI中的id标识的资源。
https://www.codeproject.com/Tips/1268090/ASP-NET-Web-API-Parameter-vs-Model-Binding