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

Modify route of API controller to remove "API" from the controller name

我的 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 有默认路由配置。

我该怎么做?

您应该可以使用属性路由。

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

    }
}

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

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

    }
}