ASP.NET Web API多个RoutePrefix

Bha*_*a K 18 attributerouting asp.net-web-api-routing asp.net-web-api2

开源属性路由允许具有多个路由前缀.为什么ASP.NET Web API 2.0不允许具有多个RoutePrefix().

[RoutePrefix("api/v1/{abc}/Entity")]
[RoutePrefix("api/v1/{abc}/{xyz?}/Entity")]
public class MyApiController : ApiController
{
   [Route("")]
   public IHttpResult Get()
   {
      return Ok("Hello World");
   }
}
Run Code Online (Sandbox Code Playgroud)

jax*_*xbo 40

您可以添加一个路径到action方法,也可以使用"〜"覆盖RoutePrefix

例:

[RoutePrefix("api/v1/{abc}/Entity")]
public class MyApiController : ApiController
{
   [Route("")]
   [Route("~/api/v1/{abc}/{xyz?}/Entity")]
   public IHttpResult Get()
   {
      return Ok("Hello World");
   }
}
Run Code Online (Sandbox Code Playgroud)

注意这一行:[Route("〜/ api/v1/{abc}/{xyz?}/Entity")]

  • 为什么这是公认的答案?多个路由前缀可以帮助避免每个方法的多个`[Route]`属性,并大大有助于简化大型api控制器的维护 (9认同)