web-dev-qa-db-ja.com

ASP.NETコアでSwaggerのベースURLを変更する方法

デフォルトでは、ASP.NET Coreプロジェクトでswaggerを有効にすると、urlで利用可能になります。

http://localhost:<random_port>/swagger/ui

/swagger/uiの代わりに別のベースURLを使用したいと思います。どのように/どこで設定できますか?

古いバージョンではRootUrlを構成できますが、ASP.NET Coreには似たようなメソッドはありません。

.EnableSwagger(c =>
{
    c.RootUrl(req => myCustomBasePath);
});
15
Mariusz Jamro

新しいswaggerバージョンでは、RoutePrefixというプロパティが提供されます。

app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
    c.RoutePrefix = "docs";
});
31
maxspan

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"
      }
    }
  }
9
EspressoBeans
  1. launchSettings.jsonファイルを開きます。
  2. "profiles"ノードの下に、セットアップに応じて1つ以上のプロファイルが必要です。場合によっては、私は"IIS Express"と別のプロジェクト名(eg WebApplication1)、launchUrlエントリを"launchUrl": "swagger"に変更して、問題を解決しました。
  3. これが機能せず、他のプロファイルが同じ場合はテストしてください。
1
Mxaza

これもConfigで実行できます

app.UseSwaggerUI(c =>
            {
                c.RoutePrefix = string.Empty;
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "MY API");
            });
0
Jackboys

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 /

0