天天看點

Abp vNext swagger注釋

網上看了一些Abp vNext引用swagger的教程,大緻流程都差不多,就是生成每一層對應的xml然後使用IncludeXmlComments方法來引用,後面親自實踐發現有些差異和要點,在此記錄一下。

基本步驟:

  1. 右擊項目解決方案,屬性-生成-輸出-勾選XML文檔檔案,删除路徑資訊僅保留xml檔案名稱。例如:xxx.Application.xml。
  2. hostmodule下,AddSwaggerGen内添加以下代碼:  
    1 context.Services.AddSwaggerGen(options=> {
     3     // 添加swagger-API方法注釋
     4     var xmlapppath = Path.Combine(AppContext.BaseDirectory, "xxx.Application.xml");
     5     if (File.Exists(xmlapppath))
     6         options.IncludeXmlComments(xmlapppath, true);
     7 
     8     // 添加swagger-DTO參數注釋
     9     var xmlContractspath = Path.Combine(AppContext.BaseDirectory,"xxx.Application.Contracts.xml");
    10     if (File.Exists(xmlContractspath))
    11         options.IncludeXmlComments(xmlContractspath, true);
    12 
    13     // 添加swagger-自定義控制器注釋
    14     var xmlapipath = Path.Combine(AppContext.BaseDirectory, "xxx.WebAPI.xml");
    15     if (File.Exists(xmlapipath))
    16         options.IncludeXmlComments(xmlapipath , true);
    17 });      
  3. 引用路徑不要采用本地路徑,可以使用AppContext.BaseDirectory來拼接位址以避免釋出時遇到問題。
  4. xxx.Application.xml添加引用後可以生成API方法注釋,但是并沒有DTO參數注釋,因為dto定義都在應用服務抽象層,需要添加xxx.Application.Contracts.xml後才會有參數注釋。
  5. 因為一般使用的是動态API,如果你有自定義的controller方法,需要添加xxx.HttpApi.xml進來才能看到自定義控制器方法的注釋。
  6. 配置生成XML檔案時,注意配置release環境下的輸出,不要隻配Debug模式。