我想知道如果我们在 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:
- 报价/示例
- 报价/另一个