.net core webapi教程-配置 Swagger 版本控制信息
深山老妖浏览:6302023-11-30 21:49:02本文累计收益:0我也要赚钱

本文讲解Swagger如果控制版本信息,实现效果如下图所示:

一、新建一个版本控制枚举类
namespace SignUp.Common.Enum
{
    /// <summary>
    /// Api不同版本
    /// </summary>
    public enum ApiVersions
    {
        V1,
        V2
    }
}
二、修改program.cs文件进行配置
builder.Services.AddSwaggerGen(option =>
{
    #region SwaggerGen版本控制
    typeof(ApiVersions).GetEnumNames().ToList().ForEach(version =>
    {
        option.SwaggerDoc(version, new Microsoft.OpenApi.Models.OpenApiInfo()
        {
            Title = $"极点招聘报名系统后台接口",
            Version = version,
            Description = $"接口描述{version}"
        });
    });
    #endregion
    //option.AddAuthenticationHeader();

    #region 添加SwaggerGen注释
    // 使用反射获取xml文件,并构造出文件的路径
    var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
    var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
    // 启用xml注释,该方法第二个参数启用控制器的注释,默认为false。
    option.IncludeXmlComments(xmlPath, true);
    //对action的名称进行排序,如果有多个,就可以看见效果了。
    option.OrderActionsBy(o => o.RelativePath);
    #endregion
});
    app.UseSwaggerUI(c => {
        foreach (string version in typeof(ApiVersions).GetEnumNames()) {
            c.SwaggerEndpoint($"/swagger/{version}/swagger.json",$"极点招聘报名系统后台接口第【{version}】版本");
        }
    });
三、修改ApiController所属版本
    /// <summary>
    /// 前台用户登录相关接口
    /// </summary>
    [Route("api/[controller]/[action]")]
    [ApiController]
    //api版本控制代码
    [ApiExplorerSettings(IgnoreApi = false ,GroupName = nameof(ApiVersions.V1))]
    public class LoginController : ControllerBase
    {
        private readonly IRecruitDomainService recruitDomainService;

        public LoginController(IRecruitDomainService recruitDomainService)
        {
            this.recruitDomainService = recruitDomainService;
        }
     }

 

评论列表
发表评论
+ 关注