解決swagger跨項目或跨程序集注釋不顯示問題


背景

我們在使用Swagger生成.NET Core Web Api 項目接口文檔時候,發現接口的入參出參的注釋是看不見的,如下:

190828-swagger-no-summary.png

但是我想要結果是這樣:

190828-swagger-summary.png

原因分析以及方案

為什么沒有顯示注釋呢,注釋確實寫了呀?

190828-swagger-model.png

原因很簡單,通常我們用Swagger的時候只加載當前項目生成的xml注釋文件,例如這樣:

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

如果你的入參出參的實體不在當前項目文件下,而是在Model層或者領域層創建的,肯定是沒有的。

怎么解決?

  1. 首先入參出參的實體所在項目要勾選輸出xml注釋文件; 這個簡單在項目的屬性->生成頁面勾選就行;
  2. Swagger要加載xml注釋文件;

代碼如下:

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;
    }
}

即可實現以上效果!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM