bwin老品牌:碧桂园(02007.HK)4月合同销售额按年微升至226.9亿人民币

哈希牛牛www.hx198.vip)采用波场区块链高度哈希值作为统计数据,游戏数据开源、公平、无任何作弊可能性,开放单双哈希、幸运哈希、哈希定位胆、哈希牛牛等游戏。

碧桂园(02007.HK) 公布,,

Allbet注册www.aLLbet8.vip)是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。

,今年4月份单月实现归属股东权益的合同销售金额约226.9亿元人民币,按年增长0.2%,归属股东权益合同销售建筑面积为约278万平方米。(gc/k)(港股报价延迟最少十五分钟。沽空资料截至 2023-05-05 16:25。)

,

bwin老品牌www.ad182838.vip)是威尼斯人官方网站。bwin老品牌开放威尼斯网上娱乐、澳门威尼斯人手机版下载、澳门威尼斯人官网app下载、澳门现金网app下载。bwin老品牌是线上真人赌场、网上真钱打牌的澳门现金网官网。

  • 评论列表:
  •  区块链百家乐官网
     发布于 2023-05-18 00:03:08  回复
  • /// <summary>
    /// 分组信息特性
    /// </summary>
    public class GroupInfoAttribute : Attribute
    {
    /// <summary>
    /// 标题
    /// </summary>
    public string Title { get; set; }
    /// <summary>
    /// 版本
    /// </summary>
    public string Version { get; set; }
    /// <summary>
    /// 描述
    /// </summary>
    public string Description { get; set; }
    }

    2、准备分组枚举

    /// <summary>
    /// 接口分组枚举
    /// </summary>
    public enum ApiGroupNames
    {
    [GroupInfo(Title = "登录认证", Description = "登录相关接口", Version = "v1")]
    Login,
    [GroupInfo(Title = "User", Description = "用户相关接口")]
    User,
    [GroupInfo(Title = "User", Description = "订单相关接口")]
    Order
    }

    3、准备接口特性

    /// <summary>
    /// 分组接口特性
    /// </summary>
    public class ApiGroupAttribute : Attribute, IApiDescriptionGroupNameProvider
    {
    /// <summary>
    ///
    /// </summary>
    /// <param name="name"></param>
    public ApiGroupAttribute(ApiGroupNames name)
    {
    GroupName = name.ToString();
    }
    /// <summary>
    /// 分组名称
    /// </summary>
    public string GroupName { get; set; }
    }

    4、给不同接口加上特性

    [ApiController]
    public class HomeController : ControllerBase
    {
    private readonly ILogger<HomeController> _logger;
    public HomeController(ILogger<HomeController> logger)
    {
    _logger = logger;
    }
    /// <summary>
    /// 获取用户信息
    /// </summary>
    /// <returns></returns>
    [HttpGet("home/getuser")]
    [ApiGroup(ApiGroupNames.User)]
    public string GetUser()
    {
    return "my name is dotnetboy";
    }
    /// <summary>
    /// 登录成功
    /// </summary>
    /// <returns></returns>
    [HttpPost("home/login")]
    [ApiGroup(ApiGroupNames.Login)]
    public string Login()
    {
    return "login success";
    }
    /// <summary>
    /// 删除订单
    /// </summary>
    [HttpDelete("home/{id}")]
    [ApiGroup(ApiGroupNames.Order)]
    public string DeleteOrder(string id)
    {
    return $"delete success,id={id}";
    }
    /// <summary>
    /// 留言
    /// </summary>
    [HttpDelete("home/message")]
    public string DeleteUser(string msg)
    {
    return $"message:{msg}";
    }
    }

    5、修改 ConfigureServices 方法的 AddSwaggerGen

    services.AddSwaggerGen(options =>
    {
    options.SwaggerDoc("v1", new OpenApiInfo
    {
    Title = "接口文档",
    Version = "v1",
    Description = "测试 webapi"
    });
    // 遍历ApiGroupNames所有枚举值生成接口文档,Skip(1)是因为Enum第一个FieldInfo是内置的一个Int值
    typeof(ApiGroupNames).GetFields().Skip(1).ToList().ForEach(f =>
    {
    //获取枚举值上的特性
    var info = f.GetCustomAttributes(typeof(GroupInfoAttribute), false).OfType<GroupInfoAttribute>().FirstOrDefault();
    options.SwaggerDoc(f.Name, new OpenApiInfo
    {
    Title = info?.Title,
    Version = info?.Version,
    Description = info?.Description
    });
    });
    // 没有特性的接口分到NoGroup上
    options.SwaggerDoc("NoGroup", new OpenApiInfo
    {
    Title = "无分组"
    });
    // 判断接口归于哪个分组
    options.DocInclusionPredicate((docName, apiDescription) =>
    {
    if (docName == "NoGroup")
    {
    // 当分组为NoGroup时,只要没加特性的接口都属于这个组
    return string.IsNullOrEmpty(apiDescription.GroupName);
    }
    else
    {
    return apiDescription.GroupName == docName;
    }
    });
    });

    6、修改 Configure 方法的 UseSwaggerUI

    app.UseSwaggerUI(options =>
    {
    // 遍历ApiGroupNames所有枚举值生成接口文档
    typeof(ApiGroupNames).GetFields().Skip(1).ToList().ForEach(f =>
    {
    //获取枚举值上的特性
    var info = f.GetCustomAttributes(typeof(GroupInfoAttribute), false).OfType<GroupInfoAttribute>().FirstOrDefault();
    options.SwaggerEndpoint($"/swagger/{f.Name}/swagger.json", info != null ? info.Title : f.Name);
    });
    options.SwaggerEndpoint("/swagger/NoGroup/swagger.json", "无分组");
    options.RoutePrefix = string.Empty;
    });

    休息会再看

添加回复:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。