webapi route特性
时间: 2023-07-11 16:32:37 浏览: 58
ASP.NET Web API 中的 Route 特性用于自定义控制器和操作方法的路由信息。通过使用 Route 特性,可以将控制器和操作方法映射到指定的 URL。
以下是使用 Route 特性自定义控制器路由的示例:
```csharp
[RoutePrefix("api/products")]
public class ProductsController : ApiController
{
[HttpGet]
[Route("")]
public IHttpActionResult GetProducts()
{
// ...
}
[HttpGet]
[Route("{id:int}")]
public IHttpActionResult GetProduct(int id)
{
// ...
}
[HttpPost]
[Route("")]
public IHttpActionResult CreateProduct(Product product)
{
// ...
}
[HttpPut]
[Route("{id:int}")]
public IHttpActionResult UpdateProduct(int id, Product product)
{
// ...
}
[HttpDelete]
[Route("{id:int}")]
public IHttpActionResult DeleteProduct(int id)
{
// ...
}
}
```
上述示例中,通过在控制器上使用 `[RoutePrefix("api/products")]` 特性,将控制器映射到 URL `api/products`。
在控制器的操作方法上,使用 `[Route]` 特性来指定操作方法的 URL,例如 `[Route("{id:int}")]` 将会把 URL 中的 `{id}` 参数映射到操作方法的参数上,并限制该参数必须为整数。
需要注意的是,使用 `[Route]` 特性自定义路由时,控制器和操作方法的名称将不再起到路由作用。
除了使用 `[Route]` 特性来自定义路由,还可以使用 `[HttpGet]`、`[HttpPost]`、`[HttpPut]`、`[HttpDelete]` 等 HTTP 方法特性来限定操作方法的 HTTP 方法,以及使用 `[AllowAnonymous]`、`[Authorize]` 等授权特性来限制操作方法的访问权限。