我有mineController.cs 现在在我的路线上,是否有可能做到 / api / mycontroller / myaction
即。我尝试将路由限制为控制器名称
答案 0 :(得分:1)
如果您使用的是Web Api 2,则可以使用Attribute Routing:
[RoutePrefix("api/mine")]
public class mineController : ApiController
{
[Route("method1")]
[HttpGet]
public IHttpActionResult Method1()
{
//Route would be api/mine/method1
}
[Route("method2")]
[HttpGet]
public IHttpActionResult Method2()
{
//Route would be api/mine/method2
}
}
答案 1 :(得分:1)
是的,使用属性路由。
第1步:使用WebApiConfig.Register
方法启用属性路由(默认情况下可能会启用,我不会随意回忆):
config.MapHttpAttributeRoutes();
第2步:不需要,但为整个控制器使用RoutePrefix
属性真的很好:
[RoutePrefix("api/mycontroller")
public class mineController : ApiController
{
..
}
步骤3:对完成路由前缀的每个方法使用Route
属性:
[Route("myaction")]
[HttpGet] /* or other HttpVerb */
public IHttpActionResult SomeMethod()
{
...
}
[Route("myaction/{id}")]
[HttpGet] /* or other HttpVerb */
public IHttpActionResult SomeMethod(int id)
{
...
}
此处有更多信息:https://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2
答案 2 :(得分:0)
您可以使用System.Web.Http.RouteAttribute
来装饰您的控制器操作并指定您想要的任何路线。根据您想要做的事情,这可能是一个很好的方法。