路由前缀VS控制器名称(Web api)

时间:2017-01-25 13:47:02

标签: c# asp.net-mvc asp.net-web-api asp.net-mvc-routing attributerouting

我想知道如果我们在web api控制器中使用RoutePrefix属性,其名称与控制器的实际名称不同。它会起作用吗?

就我而言

[RouterPrefix("quotation")]
public class SaleOrderController : ApiController { ... }

如果我们如上所述定义RoutePrefix,我们无法通过/quotation访问它,但我们可以使用saleorder访问它。

那么RoutePrefix或者我做错了什么?

2 个答案:

答案 0 :(得分:5)

使用默认路线Route("")

[RoutePrefix("quotation")]
public class SaleOrderController : ApiController {

    //GET quotation
    [Route("")]
    [HttpGet]
    public IHttpActionResult GetAll() { ... }

}

来源:Attribute Routing in ASP.NET Web API 2 : Route Prefix

答案 1 :(得分:4)

要使其正常工作,您需要在WebApiConfig.Register()方法中调用以下代码:

config.MapHttpAttributeRoutes();

因此,RoutePrefix的工作原理如下:

[RoutePrefix("quotation")]
public class SaleOrderController : ApiController
{
    [Route("example")]
    [HttpGet]
    public IHttpActionResult Example()
    {
        return Ok();
    }

    [Route("another")]
    [HttpGet]
    public IHttpActionResult Another()
    {
        return Ok();
    }

}

所以你可以这样访问你的api:

  • 报价/示例
  • 报价/另一