您可以在 Global.asax 中修改路由。默认设置为:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
但是您可以将其更改为例如使用操作名称:
routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
有关 MVC WEB API 中自定义路由的更多信息,请查看这篇文章。
根据评论更新
以上是对“我可以更改路由吗?”问题的答案。简短的回答是肯定的,但正如在另一个答案中指出的那样,您可能不想维护一个好的 REST API。带有默认路由的 MVC Web API 维护您正在处理资源的基本 REST 概念,控制器代表资源。在您的另一个问题中,您举了一个例子:
DELETE /account/1234/note/321 <- delete note 321 on account 1234
您要删除帐户 1234 上的注释的位置。在这种情况下,您正在处理的资源是注释。对此更好的表示是使用查询字符串,因此本示例的 API 如下所示:
DELETE /note/321?account=1234 <- delete note 321 on account 1234
这样您就不需要弄乱路由,并且很明显,被操作的资源是使用过滤器的注释。但是我也会质疑如果 note 的 id 对于整个应用程序而不只是特定帐户是唯一的,是否有必要添加这个显式过滤器(即 where 子句)。