.NET6 搭建webapi项目

1. 创建项目

.NET6 搭建webapi项目插图
.NET6 搭建webapi项目插图(1)

保持默认选项

.NET6 搭建webapi项目插图(2)

点击创建即可,创建webapi项目

.NET6 搭建webapi项目插图(3)

2. 修改返回数据的时间格式

.NET6 搭建webapi项目插图(4)

修改时间格式:

nuget安装 Microsoft.AspNetCore.Mvc.NewtonsoftJson

.NET6 搭建webapi项目插图(5)

只需要在Program.cs 文件下添加几行代码

找到 `builder.Services.AddControllers()`

.NET6 搭建webapi项目插图(6)

代码如下:

builder.Services.AddControllers()
    .AddNewtonsoftJson(options =>
    {
        options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss"; //格式化时间
    });

修改后的效果:

.NET6 搭建webapi项目插图(7)

3. 开启Swagger 注释

打开Xml文件生成,右键项目进入属性设置:

.NET6 搭建webapi项目插图(8)

取消未进行注释而进行提示的警告:

.NET6 搭建webapi项目插图(9)

然后Progarm.cs 添加如下代码

.NET6 搭建webapi项目插图(10)

builder.Services.AddSwaggerGen(options => 
{
    //获取xml文件名称
    var xmlFileName = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
    //包含注释,第二个参数表示是否显示控制器注释
    options.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, xmlFileName), true);
});

在测试控制器中添加注释进行测试:

.NET6 搭建webapi项目插图(11)
.NET6 搭建webapi项目插图(12)

4. 添加版本控制

首先创建一个枚举类:

namespace MES.API
{
    /// 
    ///  API版本枚举
    /// 
    public enum APIVersion
    {
        /// 
        /// v1版本
        /// 
        v1,

        /// 
        /// v2版本
        /// 
        v2,
    }
}

然后Progarm.cs 添加如下代码 :

    //显示多个文档
    typeof(APIVersion).GetEnumNames().ToList().ForEach(version =>
    {
        //添加文档介绍
        options.SwaggerDoc(version, new OpenApiInfo
        {
            Title = "工厂MES系统项目",
            Version = version.ToString(),
            Description = $"工厂MES系统项目:{version}版本"
        });
    });

还有下面的代码

//版本切换
    app.UseSwaggerUI(options =>
    {
        typeof(APIVersion).GetEnumNames().ToList().ForEach(version =>
        {
            options.SwaggerEndpoint($"/swagger/{version}/swagger.json", $"版本选择:{version}");
        });
    });

.NET6 搭建webapi项目插图(13)
.NET6 搭建webapi项目插图(14)

在测试控制器方法中添加版本控制特性:

.NET6 搭建webapi项目插图(15)

运行测试效果:

.NET6 搭建webapi项目插图(16)
.NET6 搭建webapi项目插图(17)
.NET6 搭建webapi项目插图(18)

5. 安装EF Core相关的依赖包

.NET6 搭建webapi项目插图(19)

注意版本:

Microsoft.EntityFrameworkCore 6.0.14
Microsoft.EntityFrameworkCore.Design 6.0.14
Microsoft.EntityFrameworkCore.Tools 6.0.14
Pomelo.EntityFrameworkCore.MySql 6.0.2

6. 配置DbContext

1、新建一个SqlDbContext类,继承DbContext数据上下文类
2、构造函数注入DbContextOptions,使用:base()语法,传入DbContextOptions到基类

/// 
/// 
/// 
/// 数据库连接字符串
public SqlDbContext(DbContextOptions options) : base(options)
{

}

3、关于EF Core性能优化,重写OnConfiguring函数

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    //全局关闭EF Core数据跟踪
    optionsBuilder.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);  //关闭所有查询的状态跟踪
    //optionsBuilder.UseLazyLoadingProxies(); //启用延迟加载

    base.OnConfiguring(optionsBuilder);
}

.NET6 搭建webapi项目插图(20)
.NET6 搭建webapi项目插图(21)
四、Program.cs 启动类

1、配置DbContext数据库连接字符串

#region WebApi项目配置

builder.Services.AddDbContext<SqlDbContext>(options =>
{
    var connectionString = configuration.GetConnectionString("strConn");
    var serverVersion = ServerVersion.AutoDetect(connectionString);
    // MySql
    options.UseMySql(connectionString, serverVersion);
});

#endregion

2、注意这里的连接字符串是从appsetting.json文件中获取的,ConnectionStrings节点下的strConn

//数据库连接字符串
"ConnectionStrings": {
	"strConn": "server=localhost;port=端口号;database=数据库名称;uid=账号;password=密码;"
},

7. 生成数据库

1、首先打开SqlDbContext.cs类,添加以下属性

public virtual DbSet<Picture> Pictures { get; set; }

1.首先执行添加迁移

add-migration CreateTable_v1.0

2.然后执行

update-database

无报错无异常,那么我们的数据库就生成成功了,Picture表同样创建成功!

参考地址:http://www.yii666.com/blog/402342.html

本站无任何商业行为
个人在线分享 » .NET6 搭建webapi项目
E-->