C# WebApi 路由机制剖析

2019-12-30 19:56:53刘景俊

4、参数的约束和默认值


[Route("api/order/{id:int=3}/ordertype")]
  [HttpGet]
  public IHttpActionResult GetById(int id)
  {
   return Ok<string>("Success" + id );
  }

这里约束可变部分{id}的取值必须是int类型。并且默认值是3.

看看效果

C#,WebApi,路由机制

C#,WebApi,路由机制

不满足约束条件,则直接返回404。

5、路由前缀

在正式项目中,同一个控制器的所有的action的所有特性路由标识一个相同的前缀,这种做法并非必须,但这样能够增加url的可读性。一般的做法是在控制器上面使用特性[RoutePrefix]来标识。


[RoutePrefix("api/order")]
 public class OrderController : ApiController
 {
  [Route("")]
  [HttpGet]
  public IHttpActionResult GetAll()
  {
   return Ok<string>("Success");
  }

  [Route("{id:int}")]
  [HttpGet]
  public IHttpActionResult GetById(int id)
  {
   return Ok<string>("Success" + id );
  }

  [Route("postdata")]
  [HttpPost]
  public HttpResponseMessage PostData(int id)
  {
   return Request.CreateResponse();
  }
 }

那么这个这个控制器的action的时候,都需要/api/order开头,后面接上action特性路由的规则。