デフォルトでは、ASP.NET Coreプロジェクトでswaggerを有効にすると、urlで利用可能になります。
http://localhost:<random_port>/swagger/ui
/swagger/ui
の代わりに別のベースURLを使用したいと思います。どのように/どこで設定できますか?
古いバージョンではRootUrl
を構成できますが、ASP.NET Coreには似たようなメソッドはありません。
.EnableSwagger(c =>
{
c.RootUrl(req => myCustomBasePath);
});
新しいswaggerバージョンでは、RoutePrefixというプロパティが提供されます。
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
c.RoutePrefix = "docs";
});
ASP.NET Core 2の場合(およびSwashbuckle.AspNetCore.Swagger -Version 4.0.1
)、デフォルトのswagger UIベースURLを変更する完全な構成のために、いくつかのことができます。
次のように、デフォルトのswagger UI URLの先頭に「mycoolapi」を追加する場合:http://<server>/mycoolapi/swagger
、次に以下を実行します。
Startup.cs Configureメソッドで:
app.UseSwagger(c =>
{
c.RouteTemplate = "mycoolapi/swagger/{documentname}/swagger.json";
});
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/mycoolapi/swagger/v1/swagger.json", "My Cool API V1");
c.RoutePrefix = "mycoolapi/swagger";
});
次に、起動時にswagger UIでブラウザーを起動するlaunchSettingsを現在持っている場合(開発目的)、launchSettings.jsonファイルプロファイルセクションを同様に更新します。
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "mycoolapi/swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"MyProject.Web": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "mycoolapi/swagger",
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
これもConfigで実行できます
app.UseSwaggerUI(c =>
{
c.RoutePrefix = string.Empty;
c.SwaggerEndpoint("/swagger/v1/swagger.json", "MY API");
});
StartUpクラスのConfigureメソッドでミドルウェアを有効にするUseSwaggerUi()
拡張メソッドは、2つの変数を取ります。 baseRoute
はデフォルトでswagger/ui
にあり、swaggerUrl
はデフォルトでswagger/v1/swagger.json
にあります。別のbaseRouteを指定するだけです。
//Swagger will be available under '/api' url
app.UseSwaggerUi("api");
SwaggerをASP.NET Core用に構成する方法について詳しく知りたい場合は、開始するためのブログ投稿を作成しました。 https://dannyvanderkraan.wordpress.com/2016/09/09/asp-net- core-1-0-web-api-automatic-documentation-with-swagger-and-swashbuckle /