私の ASP.NET Web Api (ASP.NET 4 MVC 5) アプリケーションでは、次のように構成された 2 つのルートがあります。
// 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
これらは、最初のルートに一致する「最上位」と、2 番目のルートに一致する「子」LockController
(Users
フォルダ内) があるという点で、実際には非常にうまく機能します。
アプリケーションにSwashbuckle 5 ( .net 用のSwagger ) を追加したので、Swagger は混乱して、実装した各メソッドの両方のルートを表示します。例えば:
そのため、Swagger はLockController
を最上位コントローラーと子コントローラーの両方として認識します。
特定のコントローラーがトップレベルまたは子であることを Swagger に伝えるにはどうすればよいですか?
さらに、たとえば、ロック リソースへのパスがSwagger が現在表示しているもの/api/users/{id}/lock
とは異なる ことを Swagger に認識させることはできますか?/api/{parentController}/{parentId}/lock