如何路由具有不同区域和相同名称的api控制器
本文关键字:控制器 api 何路 由具有 区域 | 更新日期: 2023-09-27 18:13:42
在我的mvc应用程序中,我有三个不同的控制器:
-
JobsAdminController
应该在/api/admin/jobs
处可用,并且有attr[RoutePrefix("admin/jobs")]
-
JobsController
,/api/jobs
-
JobsStatusController
应该在/api/jobs/status
处可用,并且有attr[RoutePrefix("jobs/status")]
但是如果我试图访问/api/admin/jobs
,我输入JobsController
而不是JobsAdminController
。是否可以使用正确的RoutePrefixes或我必须使用HttpConfiguration
更改路由?
你可以把这样的路由定义放在默认路由之前:
config.Routes.MapHttpRoute(
name: "JobsAdminRoute",
routeTemplate: "api/admin/jobs/{id}",
defaults: new { controller = "JobsAdmin", id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "JobsRoute",
routeTemplate: "api/jobs/{id}",
defaults: new { controller = "Jobs", id = RouteParameter.Optional }
);
:
-
JobsAdminController
将处理api/admin/jobs
请求 -
JobsController
将处理api/jobs
请求
记住:
- 在默认路由之前添加这些路由,因为路由将按照它们注册的顺序匹配,如果默认路由先注册,
api/admin/jobs
将与没有找到的带有jobs作为id参数的管理控制器匹配。