NetCore?配置Swagger的详细代码(netcore路由器设置网址)学会了吗

随心笔谈2年前发布 admin
244 0 0

文章摘要

本文介绍了在C#中使用Swagger框架进行API文档生成和中间件配置的静态类 SwaggerExtend。文章的核心内容是其两个静态方法: 1. **AddCustSwagger**:用于在 IServiceCollection中添加Swagger生成的文档。该方法通过配置 SwaggerOptions 对齐 Swagger文档的生成,包括处理冲突的API描述符、生成 SwaggerDoc 对象,并设置 SwaggerUI 的显示选项,如 XML注释。 2. **UseCustSwagger**:用于在IApplicationBuilder中使用Swagger作为中间件。该方法通过配置 SwaggerOptions 来设置 SwaggerUI 的默认路径、 Swagger文档的标题以及设置路由前缀,从而实现 Swagger文档的展示和API文档的生成。 文章重点介绍了 SwaggerExtend类的静态方法及其在服务集和应用中的使用场景,帮助开发者快速生成 Swagger文档并配置 SwaggerUI。

/// <summary>
/// Swagger 静态类
/// </summary>
public static class SwaggerExtend
{
/// <summary>
/// 添加服务: swagger
/// </summary>
/// <param name=”services”></param>
/// <returns></returns>
public static void AddCustSwagger(this IServiceCollection services)
{
var version=”V1.0″;
var apiName=”XXX系统”;
services.AddSwaggerGen(options=>
{
options.ResolveConflictingActions(apiDescriptions=> apiDescriptions.First());

options.SwaggerDoc(“system_v1″, new OpenApiInfo
{
Version=version,
Title=$”{apiName} API”,
Description=$”{apiName} {version} 接口服务”
});

// 获取应用程序所在目录
var basePath=Path.GetDirectoryName(typeof(SwaggerExtend).Assembly.Location);
var xmlPath=Path.Combine(basePath, “ProjectName.xml”);
// swagger界面默认只显示 方法&字段 注释,不显示 控制器注释
// 第二个参数为true, 则是controller的注释
//options.IncludeXmlComments(xmlPath);
options.IncludeXmlComments(xmlPath, true);
});
}

/// <summary>
/// 添加中间件: swagger
/// </summary>
/// <param name=”app”></param>
public static void UseCustSwagger(this IApplicationBuilder app)
{
app.UseSwagger();
app.UseSwaggerUI(options=>
{
options.SwaggerEndpoint(“/swagger/system_v1/swagger.json”, “系统API”);
// 默认路径为:/swagger/index.html
// 路由前缀 – 设置为空,可直接跳转到swagger页面:/index.html
// api测试可设置为空,部署时容易与前端路由冲突
options.RoutePrefix=string.Empty;
});
}
}

© 版权声明

相关文章