簡體   English   中英

如何在 ASP.NET 核心中更改 Swagger 的基本 url

[英]How to change base url of Swagger in ASP.NET core

默認情況下,當您在 ASP.NET Core 項目中啟用 swagger 時,它在 url 上可用:

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

我想使用不同的基本網址而不是/swagger/ui 我如何/在哪里可以配置它?

我發現對於舊版本,您可以配置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";
});

應該適用於 .net 核心

對於 ASP.NET Core 2(並使用Swashbuckle.AspNetCore.Swagger -Version 4.0.1 ),可以完成一些更改默認 swagger UI 基本 URL 的完整配置。

如果要將“mycoolapi”添加到默認 swagger UI URL 的開頭,例如: http://<server>/mycoolapi/swagger ,請執行以下操作:

在您的 Startup.cs 配置方法中:

    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";
    });

然后,如果您當前有您的 launchSettings 在啟動時在 swagger UI 上啟動瀏覽器(用於開發目的),請類似地更新您的 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"
      }
    }
  }
  1. 打開launchSettings.json文件。
  2. 根據您的設置,在“配置文件”節點下,您應該有一個或多個配置文件。 在可能的情況下,我有“IIS Express”和另一個以我的項目名稱命名的(例如 WebApplication1 ),現在將launchUrl條目更改為“launchUrl”:“swagger”解決了我的問題。
  3. 如果這不起作用並且您有其他配置文件執行相同操作並進行測試。

您也可以在 Config 中執行此操作

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

我不得不仔細閱讀原始文檔,因為上述所有解決方案都不起作用。 Startup.cs 中的這段代碼對我有用

app.UseSwagger();
app.UseSwaggerUI(c => {
    c.SwaggerEndpoint($"./v1/swagger.json", "SapWeb v1");
});

我的站點是 IIS 中的子站點。 所以,起初,我必須設置 PathBase:

app.UsePathBase($"{pathbase}");

其他答案在 .NET 5 中對我不起作用。這是我向路由添加“文檔”的方法

app.UseSwagger(c => c.RouteTemplate = "/swagger/docs/{documentName}/swagger.json");
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/docs/v2/swagger.json", "My API"));

在 StartUp 類的 Configure 方法中啟用中間件的UseSwaggerUi()擴展方法需要兩個變量。 baseRoute這是對swagger/ui按預設和swaggerUrl這是對swagger/v1/swagger.json默認。 只需提供不同的 baseRoute。

//Swagger will be available under '/api' url
app.UseSwaggerUi("api");

如果人們想了解有關為 ASP.NET Core 配置 Swagger 的更多信息,我已經寫了一篇博客文章開始: https ://dannyvanderkraan.wordpress.com/2016/09/09/asp-net-core-1- 0-web-api-automatic-documentation-with-swagger-and-swashbuckle/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM