【发布时间】:2016-01-05 12:55:05
【问题描述】:
在我的 ASP.NET Web Api (ASP.NET 4 MVC 5) 应用程序中,我有两条路由配置如下:
// Default route. Comes "out of the box" with Web Api.
// e.g. api/users/123
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
// A route for child controllers. See for example the LockController
// that is "nested" under the "UsersController".
// e.g. api/users/123/lock
config.Routes.MapHttpRoute(
name: "ChildApi",
routeTemplate: "api/{parentController}/{parentId}/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
这些实际上工作得很好,因为我有一个与第一条路线匹配的“顶级”UsersController 和一个与第二条路线匹配的“子”LockController(在Users 文件夹中) .
现在我已将Swashbuckle 5(.net 的Swagger)添加到我的应用程序中,Swagger 很困惑,无法为我实现的每种方法显示两条路线。例如:
所以 Swagger 将 LockController 识别为顶级控制器和子控制器。
如何告诉 Swagger 特定控制器是顶级控制器还是子控制器?
另外,我可以让 swagger 识别到锁资源的路径,例如,/api/users/{id}/lock 而不是 Swagger 当前显示的/api/{parentController}/{parentId}/lock?
【问题讨论】:
-
谢谢。那正是我从那里获得路线的地方。问题是,我想继续使用这些通用路由,而不是明确提及父控制器名称的特定路由。我的目标是约定优于配置。
标签: asp.net asp.net-mvc-4 asp.net-web-api swagger swashbuckle