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

mdfafbf1  于 11个月前  发布在  .NET
关注(0)|答案(8)|浏览(122)

默认情况下,当你在ASP.NET Core项目中启用swagger时,它可以在url上使用:

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

字符串
我想使用一个不同的基本URL而不是/swagger/ui。如何/在哪里可以配置它?
我发现对于旧版本,你可以配置RootUrl,但在ASP.NET Core中没有类似的方法:

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

eivnm1vs

eivnm1vs1#

对于ASP.NETCore2(并使用Swashbuckle.AspNetCore.Swagger -Version 4.0.1),可以做一些事情来更改默认swaggerUI基本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";
    });

字符串
然后,如果您当前的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"
      }
    }
  }

x6h2sr28

x6h2sr282#

新的swagger版本提供了一个名为RoutePrefix的属性。

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

字符串
应该适用于.net core

qc6wkl3g

qc6wkl3g3#

其他答案在.NET 5中对我不起作用。

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

字符串

ha5z0ras

ha5z0ras4#

您也可以在配置中执行此操作

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

字符串

piok6c0g

piok6c0g5#

1.打开launchSettings.json文件。
1.在**“profiles”节点下,根据您的设置,您应该有一个或多个配置文件。在可能的情况下,我有“IIS Express”和另一个与我的项目名称命名( 例如WebApplication1),现在将launchUrl条目更改为**“launchUrl”:“swagger”**解决了我的问题。
1.如果这不起作用,你有其他配置文件做同样的测试。

lstz6jyr

lstz6jyr6#

我不得不挖掘原始文档,因为所有上述解决方案都不起作用。Startup.cs 中的代码对我来说是有效的:

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

字符串
我的网站是IIS中的一个子网站。所以,首先,我必须设置PathBase:

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

z6psavjg

z6psavjg7#

使用Dotnet/Aspnet 8

app.UseSwagger(c =>
{
  c.RouteTemplate = "/MyCustomStuff/swagger/{documentName}/swagger.{json|yaml}";
});

字符串
应该正确更改URL。
我是通过跟踪UseSwagger..RouteTemplate找到源代码的:

/// <summary>
/// Sets a custom route for the Swagger JSON/YAML endpoint(s). Must include the {documentName} parameter
/// </summary>
public string RouteTemplate { get; set; } = "swagger/{documentName}/swagger.{json|yaml}";

sycxhyv7

sycxhyv78#

在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/

相关问题