//注册Swagger生成器
services.AddSwaggerGen(c=> {
//添加Swagger文档
c.SwaggerDoc("v1",new Microsoft.OpenApi.Models.OpenApiInfo { Title = "My API", Version = "v1" });
//
c.CustomOperationIds(apiDesc =>
{
return apiDesc.TryGetMethodInfo(out MethodInfo methodInfo) ? methodInfo.Name : null;
});
//接口添加注释
var filePath = Path.Combine(System.AppContext.BaseDirectory, "Swaggger5Test.xml");
c.IncludeXmlComments(filePath);
//Model添加注释
var modelPath = Path.Combine(System.AppContext.BaseDirectory, "Swagger5Test.Models.xml");
c.IncludeXmlComments(modelPath);
});
//接口添加注释
var filePath = Path.Combine(System.AppContext.BaseDirectory, "Swaggger5Test.xml");
c.IncludeXmlComments(filePath);
//Model添加注释
var modelPath = Path.Combine(System.AppContext.BaseDirectory, "Swagger5Test.Models.xml");
c.IncludeXmlComments(modelPath);
app.UseSwagger(c => {
c.PreSerializeFilters.Add((swaggerDoc, httpReq) => {
OpenApiPaths paths = new OpenApiPaths();
foreach (var path in swaggerDoc.Paths)
{
if (path.Key.StartsWith("/api/Product"))//过滤Path
paths.Add(path.Key, path.Value);
}
swaggerDoc.Paths = paths;
swaggerDoc.Servers = new List<OpenApiServer> { new OpenApiServer { Url = $"{httpReq.Scheme}://{httpReq.Host.Value}" } };
});
});
OpenApiPaths paths = new OpenApiPaths();
foreach (var path in swaggerDoc.Paths)
{
if (path.Key.StartsWith("/api/Product"))//过滤Path
paths.Add(path.Key, path.Value);
}
swaggerDoc.Paths = paths;
// app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");//Swagger文档路径
c.RoutePrefix = "";//设置为首页访问
});