如何在 ASP.NET 核心中更改 Swagger 的基础 url
How to change base url of Swagger in ASP.NET core
默认情况下,当您在 ASP.NET 核心项目中启用 swagger 时,它在 url:
上可用
http://localhost:<random_port>/swagger/ui
我想使用不同的基数 url 而不是 /swagger/ui
。 How/where 我可以配置吗?
我发现对于旧版本你可以配置 RootUrl
但在 ASP.NET 核心中没有类似的方法:
.EnableSwagger(c =>
{
c.RootUrl(req => myCustomBasePath);
});
在 StartUp class 的 Configure 方法中启用中间件的 UseSwaggerUi()
扩展方法需要两个变量。默认情况下 swagger/ui
上的 baseRoute
和默认情况下 swagger/v1/swagger.json
上的 swaggerUrl
。只需提供不同的 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/
新的 swagger 版本为您提供了一个名为 RoutePrefix 的属性。
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
c.RoutePrefix = "docs";
});
应该适用于 .net 核心
- 打开launchSettings.json文件。
- 根据您的设置,在 "profiles" 节点下,您应该有一个或多个配置文件。在可能的情况下,我有 "IIS Express" 和另一个以我的项目名称命名的(e.g WebApplication1 ), 现在将 launchUrl 条目更改为 "launchUrl": "swagger" 解决了我的问题。
- 如果这不起作用并且您有其他配置文件,请执行相同的操作并进行测试。
您也可以在配置中执行此操作
app.UseSwaggerUI(c =>
{
c.RoutePrefix = string.Empty;
c.SwaggerEndpoint("/swagger/v1/swagger.json", "MY API");
});
对于 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"
}
}
}
我不得不仔细阅读原始文档,因为上述所有解决方案均无效。 Startup.cs 中的这段代码对我有用:
app.UseSwagger();
app.UseSwaggerUI(c => {
c.SwaggerEndpoint($"./v1/swagger.json", "SapWeb v1");
});
我的站点是 IIS 中的一个子站点。所以,一开始,我不得不设置 PathBase:
app.UsePathBase($"{pathbase}");
其他答案在 .NET 5 中对我不起作用。这是我将 'docs' 添加到路由
的方法
app.UseSwagger(c => c.RouteTemplate = "/swagger/docs/{documentName}/swagger.json");
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/docs/v2/swagger.json", "My API"));
默认情况下,当您在 ASP.NET 核心项目中启用 swagger 时,它在 url:
上可用http://localhost:<random_port>/swagger/ui
我想使用不同的基数 url 而不是 /swagger/ui
。 How/where 我可以配置吗?
我发现对于旧版本你可以配置 RootUrl
但在 ASP.NET 核心中没有类似的方法:
.EnableSwagger(c =>
{
c.RootUrl(req => myCustomBasePath);
});
在 StartUp class 的 Configure 方法中启用中间件的 UseSwaggerUi()
扩展方法需要两个变量。默认情况下 swagger/ui
上的 baseRoute
和默认情况下 swagger/v1/swagger.json
上的 swaggerUrl
。只需提供不同的 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/
新的 swagger 版本为您提供了一个名为 RoutePrefix 的属性。
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
c.RoutePrefix = "docs";
});
应该适用于 .net 核心
- 打开launchSettings.json文件。
- 根据您的设置,在 "profiles" 节点下,您应该有一个或多个配置文件。在可能的情况下,我有 "IIS Express" 和另一个以我的项目名称命名的(e.g WebApplication1 ), 现在将 launchUrl 条目更改为 "launchUrl": "swagger" 解决了我的问题。
- 如果这不起作用并且您有其他配置文件,请执行相同的操作并进行测试。
您也可以在配置中执行此操作
app.UseSwaggerUI(c =>
{
c.RoutePrefix = string.Empty;
c.SwaggerEndpoint("/swagger/v1/swagger.json", "MY API");
});
对于 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"
}
}
}
我不得不仔细阅读原始文档,因为上述所有解决方案均无效。 Startup.cs 中的这段代码对我有用:
app.UseSwagger();
app.UseSwaggerUI(c => {
c.SwaggerEndpoint($"./v1/swagger.json", "SapWeb v1");
});
我的站点是 IIS 中的一个子站点。所以,一开始,我不得不设置 PathBase:
app.UsePathBase($"{pathbase}");
其他答案在 .NET 5 中对我不起作用。这是我将 'docs' 添加到路由
的方法app.UseSwagger(c => c.RouteTemplate = "/swagger/docs/{documentName}/swagger.json");
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/docs/v2/swagger.json", "My API"));