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替换的新知识

posted @ 2022-02-07 09:37  你去了龙城我留了姑苏  阅读(1658)  评论(0编辑  收藏  举报