web api:可能与控制器名称不同的路由?

时间:2017-01-31 17:05:57

标签: c# asp.net-web-api

我有mineController.cs 现在在我的路线上,是否有可能做到 / api / mycontroller / myaction

即。我尝试将路由限制为控制器名称

3 个答案:

答案 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来装饰您的控制器操作并指定您想要的任何路线。根据您想要做的事情,这可能是一个很好的方法。