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



我想知道如果我们在 Web api 控制器中使用与控制器实际名称不同的RoutePrefix属性。那么它是否有效?

就我所做的

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

如果我们像上面这样定义RoutePrefix,我们就无法通过/quotation访问它,但我们可以使用 saleorder .

那么RoutePrefix是为了什么还是我做错了什么?

要使用默认路由,请使用Route("")

[RoutePrefix("quotation")]
public class SaleOrderController : ApiController {
    //GET quotation
    [Route("")]
    [HttpGet]
    public IHttpActionResult GetAll() { ... }
}

来源:ASP.NET Web API 2 中的属性路由:路由前缀

为了使它正常工作,您需要在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:

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

最新更新