Swashbuckle.AspNetCore.Swaggerでswagger.jsonのRootPathを変更する
Swashbuckle.AspNetCore.Swaggerでswagger.jsonのRootPathを変更したい
表題の通りの欲求が発生するケースが、エンドポイントをサブディレクトリで分けて追加していくリアルワールドアプリケーションでは発生することがあります。 サブドメインを切ってくれればいいんですが、証明書の管理面倒だぞ!って話になったり、事情は色々です。
UsePathBase
を使ってのRootPathを指定することで、エンドポイント自体のRootPathは変更可能ですが、今度はSwagger.jsonのRootPathを変更する必要があります。
UseSwaggerのSwaggerOptionsのRouteTemplateの頭にサブディレクトリを付与する
個人的にSwashbuckleに関連するConfigureをまとめてるのは以下です。 github.com
UseSwaggerのSwaggerOptionsのRouteTemplateの頭にサブディレクトリを付与するコード例
app .UseSwagger(option => { if (swaggerSettings.RouteTemplateSettings.IsOverridable) { option.RouteTemplate = $"{swaggerSettings.RouteTemplateSettings.RouteTemplatePrefix}{option.RouteTemplate}"; }
settingによって切り替えるコードにしているのでswaggerSettings.RouteTemplateSettings.IsOverridable
の検査が入っていますが、option.RouteTemplate
に、サブディレクトリを付与することで、swagger.jsonのRootPathを変更することが可能です。
次に
- SwaggerUiのRootPath
- SwaggerUiからrequestを投げるエンドポイントのRootPath(Swagger a.k.a. OpenApi的にはServersに関するSettings)
の設定を行っていきます。(続きます。)