EFCore引入并使用Swagger接口可视化插件

      Install-Package Microsoft.EntityFrameworkCore.SqlServer

      Install-Package Microsoft.EntityFrameworkCore.Tools

  1. appsettings.json添加连接字符串

     "ConnectionStrings": {

    "BaseDbContextStrings": "data source=.;initial catalog=EFTest;persist security info=True;user id=sa;password=19960109;multipleactiveresultsets=True;"

  }

      2.Startup依赖注入

              public void ConfigureServices(IServiceCollection services)

        {

            services.AddDbContext<BaseDbContext>(options =>

            options.UseSqlServer(

                Configuration.GetConnectionString("BaseDbContextStrings")));

        }

    3.配置DbContext

    public class BaseDbContext: DbContext

    {

           public BaseDbContext(DbContextOptions<BaseDbContext> options)

            : base(options)

           {

           }

     }

     4.控制器初始化注入

       private readonly BaseDbContext _context;

       public WeatherForecastController(BaseDbContext context)

       {

            _context = context;

       }

      5.调用方法

_context.Students.Add(new Student() { name = "杨超众", age = 24 });

_context.SaveChanges();

      6.EFCore迁移命令

Add-Migration name(迁移名字)      生成迁移语句

Update-Database                   更新到最新的迁移

Update-Database name(迁移名字)    回退更新到name(迁移名字)这次建立的数据库

Remove-Migration name(迁移名字)   删除name(迁移名字)的迁移

Script-Migration                  生成SQL脚本

7.接口可视化插件

 

2.引入Swagger包。.Net Core 中支持两个分别为Swashbuckle和NSwag。两者的配置大同小异。这里以Swashbuckle为例。

方式1:选择工具——Nuget包管理——管理解决方案的Nuget包

 

搜索:Swashbuckle.AspNetCore  安装即可

 

 

方式2:直接在程序包管理控制台输入:Install-Package Swashbuckle.AspNetCore  回车即可安装

 

安装之后在项目的Nuget包中就可以看到了

 

3.配置Swagger中间件

   3.1 在Startup类ConfigureServices方法中添加Swagger服务并配置文档信息

  

复制代码

  using Microsoft.OpenApi.Models;

services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo { Title = "API Demo", Version = "v1" });
            });

 public void ConfigureServices(IServiceCollection services)
        {
            // 注册Swagger服务
            services.AddSwaggerGen(c =>
            {
                // 添加文档信息
                c.SwaggerDoc("v1", new Info { Title = "CoreWebApi", Version = "v1" });
            });
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
        }

复制代码

 

   3.2 在 Startup类Configure 方法中,启用中间件为生成的 JSON 文档和 Swagger UI 提供服务

  

复制代码

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }
      
            app.UseHttpsRedirection();
            // 启用Swagger中间件
            app.UseSwagger();

            // 配置SwaggerUI
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "CoreWebApi");
               
            });
            app.UseMvc();
        }

复制代码

 

 右键项目属性,将URL地址固定到某个端口

 

然后将启动项设置为当前项目,然后启动。

 

在根目录目前是没有东西的。下一步将在根目录处使用SwaggerUI

 

将RoutePrefix属性设置为空

复制代码

    app.UseHttpsRedirection();
            // 启用Swagger中间件
            app.UseSwagger();

            // 配置SwaggerUI
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "CoreWebApi");
                c.RoutePrefix = string.Empty;
            });

复制代码

再次启动项目,SwaggerUI文档成功显示出来。整体简洁大方。

 API的信息说明:传递给AddSwaggerGen()的方法可配置一些API的信息说明以及作者信息等,来展示到UI页面。修改AddSwaggerGen()方法。 

复制代码

// 注册Swagger服务
            services.AddSwaggerGen(c =>
            {
                // 添加文档信息
                c.SwaggerDoc("v1", new Info
                {
                    Title = "CoreWebApi",
                    Version = "v1",
                    Description="ASP.NET CORE WebApi",
                    Contact=new Contact
                    {
                        Name="Jee",
                        Email="princess@gmail.com"
                    }
                });
            });

复制代码

展示对应的信息

 4.启用XML注释。上边的效果只有一个简单说明,并没有我们在后台写的注释。启用XML注释之后可以轻松映射到UI界面方便前端开发人员理解。

右键当前项目——编辑****.csproj 的文件  在PropertyGroup标签组中添加如下两条

<GenerateDocumentationFile>true</GenerateDocumentationFile> <NoWarn>$(NoWarn);1591</NoWarn>

这两句的大概意思就是启用XML注释,并忽略未写注释的警告。不添加1591如果某个方法未写 "///"各式的注释,vs会有警示的消息。

 

之后AddSwaggerGen()方法中读取xml文件路径并启用

复制代码

       // 注册Swagger服务
            services.AddSwaggerGen(c =>
            {
                // 添加文档信息
                c.SwaggerDoc("v1", new Info
                {
                    Title = "CoreWebApi",
                    Version = "v1",
                    Description="ASP.NET CORE WebApi",
                    Contact=new Contact
                    {
                        Name="Jee",
                        Email="princess@gmail.com"
                    }
                });
                // 使用反射获取xml文件。并构造出文件的路径
                var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
                var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
                // 启用xml注释. 该方法第二个参数启用控制器的注释,默认为false.
                c.IncludeXmlComments(xmlPath,true);
            });

复制代码

再次启动项目,可以看到写的注释全部都映射出来了

 

Text类的返回值也可以映射出来

 

Models文件夹中的实体也可以映射在接口下方

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值