ASP.NET Core 3.1 WebApi 系列【二】sqlsugar和swagger的引用


一、引用sqlsugar步驟

1.點擊工具→nuget包管理器→管理解決方案的nuget程序包,搜索SqlSugarCore並下載安裝

 

 

 2.新增Config類用於獲取存放配置文件里AppSetting的內容;

    public class Config
    {
        public static Dictionary<string, string> AppSettings { get; set; }
    }

 

3.新建DBContext類,用來初始化SqlSugarClient

   public class DBContext
    {
        private string connectionString = null;

        public DBContext() : this(Config.AppSettings["DBConnection"])
        {

        }
        public DBContext(string connectionString)
        {
            this.connectionString = connectionString;
            this.Database = new SqlSugarClient(new ConnectionConfig()
            {
                ConnectionString = this.connectionString,
                DbType = DbType.Oracle,
                IsAutoCloseConnection = true,
                InitKeyType = InitKeyType.Attribute
            });
            this.Database.Ado.IsEnableLogEvent = true;
            this.Database.Aop.OnLogExecuting = (sql, pars) => //SQL執行前事件
            {

            };
            this.Database.Aop.OnError = (exp) =>//執行SQL 錯誤事件
            {
            };
            this.Database.Aop.OnDiffLogEvent = (it) =>
            {
            };
            this.Database.Aop.OnLogExecuted = (sql, pars) => //SQL執行完事件
            {

            };
        }

        public SqlSugarClient Database { get; private set; }
    }

注意:在nuget下載SqlSugar的時候要選擇SqlSugarCore,因為我們用的是.net Core平台,不然會報”你的應用進入了中斷狀態,但無任何代碼顯示,因為所有線程之前都在執行外部代碼(通常為系統或框架代碼)”的錯誤。 

獲取配置文件內容的方式:

在ConfigureServices方法中加入這段代碼:

var appSettings = Configuration.GetSection("AppSettings");
            if (appSettings != null)
            {
                if (Config.AppSettings == null)
                    Config.AppSettings = new Dictionary<string, string>();

                foreach (var item in appSettings.GetChildren())
                {
                    Config.AppSettings.Add(item.Key, item.Value);
                }
            }

 

 

 至此sqlsugar引用完成。

二、配置swagger步驟

1.點擊工具→nuget包管理器→管理解決方案的nuget程序包,搜索Swashbuckle.AspNetCore下載並安裝。

或者使用程序包管理器控制台,輸入如下命令:PM> Install-Package Swashbuckle.AspNetCore -Version 5.0.0-rc4

 

 

 2.在StartUp.cs類里面的ConfigureServices方法中添加如下代碼:

 

 

 services.AddSwaggerGen(m => { m.SwaggerDoc("version6.2.3", new OpenApiInfo { Title = "swaggerProject", Version = "version6.2.3" }); });

3.在StartUp.cs類里面的Configure方法中添加如下代碼,使用中間件:

 

 

app.UseSwagger();
            app.UseSwaggerUI(m =>
            {
                m.SwaggerEndpoint("/Swagger/version6.2.3/swagger.json", "swaggerProject");
            });

注意事項:

1.ConfigureServices和Configure里面配置的內容,版本號和名稱都是自己隨意命名的,但是版本號和名稱要保持一致;比如version6.2.3和swaggerProject;

2.swagger部署在iis上時應部署為網站,不要是應用程序否則swagger頁面打不開;

 4.修改項目啟動初始路徑

 

 或者在launchSettings.json文件里直接修改launchUrl的值。

 

 5.至此,swagger配置完成。Ctrl+f5查看效果。

 

 6.給swagger頁面配置中文注釋:

    選中剛才創建的Api項目,右鍵>屬性(Mac里叫選項),勾選生成XML文檔,這個是用來生成為Swagger所用的描述信息。

 

 

在之前配置swagger服務添加如下代碼獲取注釋信息

 

 

// 加載程序集的xml描述文檔
                var baseDirectory = System.AppDomain.CurrentDomain.BaseDirectory;
                var xmlFile = System.AppDomain.CurrentDomain.FriendlyName + ".xml";
                var xmlPath = Path.Combine(baseDirectory, xmlFile);
                m.IncludeXmlComments(xmlPath);

 

 

在方法或者控制器上加上注釋,swagger頁面會顯示相對應的注釋。

 

 

  

 

 

 

 

上圖我們看到,控制器和方法都給了注釋,但是swagger頁面上只能看到方法的注釋,看不到控制器的注釋,這時我們需要在Startup.cs的ConfigureServices方法中改個參數。

 

 

 

再運行就會看到controller的注釋了。

 7.路由配置

如圖,在控制器中新增一個方法運行,swagger頁面報錯。這時我們需注意controller的路由設置。

 

 

 

 

 

 

將控制器路由配置成控制器/方法,即[Route("[controller]/[action]")],運行成功。

 

 

 

 

 

 8.忽視Swagger注釋警告

啟用XML 注釋后,對於沒有給注釋的方法出現很多警告信息  例如,以下消息指示違反警告代碼 1591。

方法或者控制器等會出現波浪線。

 

 

  

如果你不想每一個方法都這么加注釋,可以這么配置,在當前項目進行配置,可以忽略警告,記得在后邊加上分號 ;1591

 

 

 

警告和波浪線消失了。

 

 

 

三、配置swagger常見錯誤

在Swagger配置的時候經常莫名其妙地看不到接口列表,這里總結一下幾個主要的問題:

1.找不到文件

 

 

在瀏覽器 F12 →console控制台里面會看到錯誤信息。

 

 

發現是404,找不到指定的文件,可能是因為一下原因:

這是因為接口json文檔定義和調用不是一個

(1)定義: ConfigureServices方法中的  services.AddSwaggerGen 注冊的一個名字 m.SwaggerDoc("version6", new OpenApiInfo { Title = "swaggerProject", Version = "version6.2.3" });

(2)調用: Configure 方法中的 app.UseSwaggerUI(m => { m.SwaggerEndpoint("/Swagger/version6.2.3/swagger.json", "swaggerProject"); }); 看看兩者是否一致

這個原因其實就是我們上面文檔配置swagger流程的第三點里面的注意事項:

2.接口請求的方式不明確:少了[httpget]、[httpPost]等,導致無法解析

 總結:

 1、至此,我們sqlsugar和swagger的引用算是成功了,通過這一篇的整體學習,我們知道了怎樣更好的使用Swagger進行開發接口文檔,更加方便快捷的使用。

 2、下一篇我們將學習.NET Core 3.1下 AutoFac內置DI替換的新知識


免責聲明!

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



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