默认情况下,在ASP.NET Core项目中启用swagger时,它在url上可用:
http://localhost:<random_port>/swagger/ui
我想使用不同的基本网址而不是/swagger/ui
。我如何/在哪里配置?
我发现对于旧版本,您可以配置RootUrl
,但ASP.NET Core中没有类似的方法:
.EnableSwagger(c =>
{
c.RootUrl(req => myCustomBasePath);
});
答案 0 :(得分:25)
新的swagger版本为您提供了一个名为RoutePrefix的属性。
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
c.RoutePrefix = "docs";
});
答案 1 :(得分:3)
对于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";
});
然后,如果您当前拥有启动设置,以便在启动时通过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"
}
}
}
答案 2 :(得分:1)
答案 3 :(得分:0)
在StartUp类的Configure方法中启用中间件的UseSwaggerUi()
扩展方法有两个变量。 baseRoute
默认情况下为swagger/ui
,默认情况下为swaggerUrl
时为swagger/v1/swagger.json
。只需提供不同的baseRoute。
//Swagger will be available under '/api' url
app.UseSwaggerUi("api");
如果有人想了解有关配置Swagger for ASP.NET Core的更多信息,我已经写了一篇博文来开始:https://dannyvanderkraan.wordpress.com/2016/09/09/asp-net-core-1-0-web-api-automatic-documentation-with-swagger-and-swashbuckle/
答案 4 :(得分:0)
您也可以在Config中完成此操作
app.UseSwaggerUI(c =>
{
c.RoutePrefix = string.Empty;
c.SwaggerEndpoint("/swagger/v1/swagger.json", "MY API");
});
答案 5 :(得分:0)
我不得不仔细阅读原始文档,因为上述所有解决方案都不起作用。 Startup.cs 中的这段代码对我有用:
app.UseSwagger();
app.UseSwaggerUI(c => {
c.SwaggerEndpoint($"./v1/swagger.json", "SapWeb v1");
});
我的站点是 IIS 中的子站点。所以,一开始,我必须设置 PathBase:
app.UsePathBase($"{pathbase}");