当我想更改 swagger 中的默认路由模板时,我遇到了一种情况。如果我在路由模板中使用字符串插值,编译器会抱怨我的代码中没有的
documentName
变量,但根据 Swagger 文档,该部分是必需的。我该如何解决?
var routePrefix = "api-docs";
app.UseSwagger(c => c.RouteTemplate = $"{routePrefix}/swagger/{documentName}/swagger.json"); // This is the error
app.UseSwaggerUI(c => {
foreach (var description in apiVersionDescriptionProvider.ApiVersionDescriptions) {
c.SwaggerEndpoint($"/{routePrefix}/swagger/{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant());
c.RoutePrefix = routePrefix;
}
});
将
{documentName}
更改为 {documentName}
,因为您使用 $
。此外,您需要更改 RouteTemplate
和 SwaggerEndpoint
,如下所示,因为默认的路由前缀是 swagger
:
var routePrefix = "api-docs";
var apiVersionDescriptionProvider = app.Services.GetRequiredService<IApiVersionDescriptionProvider>();
app.UseSwagger(c => c.RouteTemplate = $"{routePrefix}/{{documentName}}/swagger.json"); // This is the error
app.UseSwaggerUI(c => {
foreach (var description in apiVersionDescriptionProvider.ApiVersionDescriptions)
{
c.SwaggerEndpoint($"/{routePrefix}/{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant());
c.RoutePrefix = routePrefix;
}
});
请求网址应为:
https://localhost:portNumber/api-docs/index.html