修改API控制器的路由以从控制器名称中删除“API”

时间:2015-07-24 22:15:24

标签: c# asp.net-mvc asp.net-web-api controller asp.net-web-api2

我的User模型有两个控制器。一个是常规MVC控制器,它处理视图并从Controller继承。然后我有一个继承自ApiController的API控制器。他们的名字分别是UsersControllerUsersApiController。我希望从API控制器的URL中删除“Api”,这样我就可以输入:

  

www.mywebsite.com/api/Users

而不是:

  

www.mywebsite.com/api/UsersApi

包含冗余的“api”。

我已经尝试将属性[Route("Users")][Route("api/Users")]应用于整个控制器,但是它们都没有工作,它们似乎只是打破它。我的WebApiConfig.cs具有默认路由配置。

我该怎么做?

1 个答案:

答案 0 :(得分:4)

您应该能够使用属性路由。

[RoutePrefix("api/users")]
public class UsersApiController : ApiController
{  
    [Route("")]
    public HttpResponseMessage Get() 
    { 

    }
}

您应该能够根据操作方法自定义

public class UsersApiController : ApiController
{  
    [Route("api/users")]
    public HttpResponseMessage Get() 
    { 

    }
}