• (转)解决swagger跨项目或跨程序集注释不显示问题


          原文地址:https://www.cnblogs.com/ricolee/p/swagger-summary.html

    背景#

    我们在使用Swagger生成.NET Core Web Api 项目接口文档时候,发现接口的入参出参的注释是看不见的,如下:

    190828-swagger-no-summary.png

    但是我想要结果是这样:

    190828-swagger-summary.png

    原因分析以及方案#

    为什么没有显示注释呢,注释确实写了呀?

    190828-swagger-model.png

    原因很简单,通常我们用Swagger的时候只加载当前项目生成的xml注释文件,例如这样:

    Copy
    var xmlPath = Path.Combine(basePath, "AppData", "XXX.WebAPI.xml");
    services.AddSwaggerGen(c =>
    {
        c.IncludeXmlComments(item);
    }
    

    如果你的入参出参的实体不在当前项目文件下,而是在Model层或者领域层创建的,肯定是没有的。

    怎么解决?

    1. 首先入参出参的实体所在项目要勾选输出xml注释文件; 这个简单在项目的属性->生成页面勾选就行;
    2. Swagger要加载xml注释文件;

    代码如下:

    Copy
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddSwaggerGen(c =>
        {
            foreach (var item in XmlCommentsFilePath)
            {
                c.IncludeXmlComments(item);
            }
        });
    }
    
    static List<string> XmlCommentsFilePath
    {
        get
        {
            var basePath = PlatformServices.Default.Application.ApplicationBasePath;
            DirectoryInfo d = new DirectoryInfo(basePath);
            FileInfo[] files = d.GetFiles("*.xml");
            var xmls = files.Select(a => Path.Combine(basePath, a.FullName)).ToList();
            return xmls;
        }
    }
    

    即可实现以上效果!

  • 相关阅读:
    jquery----->helloworld
    hibernate------->第一个程序
    spring使用jdbcTemplate和jdbcdaosupport和namedparameter
    spring--------------->AOP
    spring------>Helloworld
    JS全选
    表单重复提交
    session
    cookies
    83. Remove Duplicates from Sorted List
  • 原文地址:https://www.cnblogs.com/hhhh2010/p/13337395.html
Copyright © 2020-2023  润新知