路由前缀 VS 控制器名称 ( Web api )
Route Prefix VS Controller Name ( Web api )
我想知道如果我们在 Web api 控制器中使用与控制器实际名称不同的 RoutePrefix
属性。那么到底行不行呢?
据我所知
[RouterPrefix("quotation")]
public class SaleOrderController : ApiController { ... }
如果我们像上面那样定义 RoutePrefix
,我们将无法通过 /quotation
访问它,但我们可以使用 saleorder
访问它。
那么 RoutePrefix
是为了什么还是我做错了什么?
为了使其正常工作,您需要在 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:
- quotation/example
- quotation/another
要使用默认路由,请使用 Route("")
[RoutePrefix("quotation")]
public class SaleOrderController : ApiController {
//GET quotation
[Route("")]
[HttpGet]
public IHttpActionResult GetAll() { ... }
}
我想知道如果我们在 Web api 控制器中使用与控制器实际名称不同的 RoutePrefix
属性。那么到底行不行呢?
据我所知
[RouterPrefix("quotation")]
public class SaleOrderController : ApiController { ... }
如果我们像上面那样定义 RoutePrefix
,我们将无法通过 /quotation
访问它,但我们可以使用 saleorder
访问它。
那么 RoutePrefix
是为了什么还是我做错了什么?
为了使其正常工作,您需要在 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:
- quotation/example
- quotation/another
要使用默认路由,请使用 Route("")
[RoutePrefix("quotation")]
public class SaleOrderController : ApiController {
//GET quotation
[Route("")]
[HttpGet]
public IHttpActionResult GetAll() { ... }
}