我正在开发一个ASP.NET Core3.1MVC web应用程序,里面有web API项目。现在我只想为API项目配置Swagger文档,那么如何在配置中指定只使用web API控制器进行文档?
ConfigureServices方法内startup类中swagger的配置如下所示:-
services.AddSwaggerGen(option =>
{
option.SwaggerDoc("v1.0",
new OpenApiInfo
{
Title = "ProjName OpenApi",
Version = "1.0",
//Description = //get from appsettings.json
});
var xmlCommentFileName = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
var xmlCommentFilePath = Path.Combine(AppContext.BaseDirectory, xmlCommentFileName);
option.IncludeXmlComments(xmlCommentFilePath);
});
app.UseSwagger(option =>
{
option.RouteTemplate = "docs/{documentname}/swagger.json";
});
app.UseSwaggerUI(option =>
{
option.SwaggerEndpoint("/docs/v1.0/swagger.json", "ProjName OpenApi v1.0");
option.RoutePrefix = "docs/v1.0";
option.DocumentTitle = "ProjName OpenAPI Docs";
});
根据您的描述,我建议您可以尝试创建一个自定义过滤器来检查控制器名称是否为mvc控制器,然后删除其路由。
更多细节,您可以参考以下代码:
Startup.cs ConfigureServices方法:
services.AddSwaggerGen(option =>
{
option.SwaggerDoc("v1.0",
new OpenApiInfo
{
Title = "ProjName OpenApi",
Version = "1.0"});
option.DocumentFilter<HideInDocsFilter>();
});
public class HideInDocsFilter : IDocumentFilter
{
public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
{
foreach (var apiDescription in context.ApiDescriptions)
{
// replace the data to your controller name
if (apiDescription.ActionDescriptor.DisplayName.Contains("Data"))
{
var route = "/" + apiDescription.RelativePath.TrimEnd('/');
swaggerDoc.Paths.Remove(route);
}
}
}
}
仅包含WeatherForecast控制器方法
我正试图提供格式化的描述给一个在大摇大摆的控制器。但是,我找不到任何可以启用它的注释。当前看起来如下所示: 然而,我想提供有意义的描述。不推荐使用带有的参数。
我使用Swagger编辑器生成了一个API定义。我想生成为API服务的Controller,即从ApiController继承。这可能吗?我注意到可以生成使用API所需的C#类(从在线编辑器-生成客户端的菜单中),但生成服务器代码的菜单列表不包括MVC或类似的C#功能。
我需要调用这个API在我的控制器得到它的数据。 这是我的控制器 以下是XML响应的外观:
知道如何正确设置控制器描述吗? 谢谢,马里奥
我在Kubernetes(spring boot starter父版本2.2.4.RELEASE)中部署了一个带有开放api 3的spring boot应用程序。其余endpoint可以通过入口访问,因此URL类似于: 我有一个问题,一旦应用程序被部署到入口,api-docs也可以通过: 当我打开斯威格UI我有404,因为斯威格UI似乎正在调查https://host/v3/api-docs...
我无法在swagger ui中显示我的spring文档。这是我的配置: 我输入这个URL来访问接口:http://localhost:8080/swagger-ui.html 问题是它没有显示从以下位置加载的api-docs: "http://localhost:8080/v3/api-文档/招摇配置“ 状态:200。 但是如果我在url字段中输入这个,它会工作。。我的目标不是每次都进入这个。。