.Net Api Sql Sugar

17 篇文章 0 订阅
16 篇文章 0 订阅

.Net Api Sql Sugar

文章介绍:
大家好,我是行不更名,坐不改姓的宋晓刚,下面将带领大家从基础小白到高阶的C#的Api学习,跟上我的步伐进入C#的世界。
微信:15319589104
QQ: 2981345658

本文将为您深入介绍.NET Core WebAPI的基础知识,以及新引入的MinimalAPI的概念。同时,我们还将详细讲解如何使用SqlSugar这一轻量级ORM工具进行数据操作。最后,我们将引导您了解如何通过静态文件中间件轻松访问站点资源。

目录讲解:

  • 介绍WebApi框架结构
  • 最小化的WebApi框架结构使用
  • 利用Api和Sql Sugar同步到数据库数据
  • 静态文件中间件访问

Wep Api结构

Web Api概述

WebApi概述:

  • 在本模块中,你将使用 ASP.NET Core 创建新的 Web API 应用程序,并了解如何从命令行运行和测试该应用程序。
  • 我们浏览网页时候,Web服务器将使用Html,Css和Js与浏览器同行,例如提交登录按钮窗体,浏览器会将信息发送回Web服务器。
  • Web服务器可以使用(浏览器,移动设备,其他Web服务器等)通信,API客户端通过HTTP与服务器Web 服务与各种各样的客户端通信,两者都使用 JSON 或 XML 等数据格式来交换信息。

框架说明:

  • Web API是一个HTTP服务端框架,它同RESTful web服务亦是一致的,换句话说,其会对于每一个不同的方法,都会有一个与之相对的HTTP方法。其最常用的HTTP方法有GET、POST、PUT、DELETE
  • GET:其是用于请求数据。其并不会修改服务器上的数据。
  • POST:其是用于提交数据。其会请求在服务器上新建数据。
  • PUT:其是用于更新服务器上的数据。会携带需要更新的数据作为请求体。
  • DELETE:其是用于删除服务器上的数据。
  • 控制器:.Net Web Api中,可以使用控制器(Controller)来处理客户端的请求并返回响应。控制器是一个类,其中包含一系列的方法,每个方法都可以处理一个特定的HTTP请求。
  • Model:模型是一个类,其中包含数据的属性和方法。你可以使用自动映射将来自客户端的JSON数据转换为你的模型对象。

创建项目

普通项目

1.0创建项目,我们点击新建Web Api,需要我们配置,勾选选项如下:

  • 配置 HTTPS(H)
  • 使用控制器(取消选中以使用最小 API)
  • 启用 OpenAPI支持(O)
    如下图所示:

在这里插入图片描述

项目文件介绍:

  • Program.cs:此文件是项目的入口点,它定义了应用程序的启动过程和运行时行为。
  • Controllers 文件夹:此文件夹中包含项目中的控制器。控制器是用于处理客户端请求的类,每个控制器通常对应一个或多个HTTP路由。
  • Views 文件夹:此文件夹中包含用于呈现HTML的视图。视图是用于展示数据给客户端的静态文件。
  • wwwroot 文件夹:此文件夹是Web应用程序的根目录,其中包含所有静态文件,例如HTML、CSS、JavaScript文件等。
最小化项目

1.0创建项目,我们点击新建Web Api,我们只需要勾选一个选项启用 OpenAPI支持(O) ,剩下的配置选项都不勾选

在这里插入图片描述

2.0删除Program中的代码,删除后的代码如下:

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.Run();

3.0下面我们进行添加数据库字符串连接,安装Nugut包SqlSugarCore
注: 我们在appsettings.json这个文件中,去添加字符串连接,数据库可以没有,我们代码会自动创建数据库的。

 "ConnectionStrings": {
   "conn": "Data Source=LAPTOP-QME2OEFQ;Initial Catalog=StuApi;User ID=sa;Password=000000;Encrypt=false"
 }

4.0在Program中去配置数据库连接字符串

// 配置数据库连接字符串
builder.Services.AddScoped<ISqlSugarClient>(p =>
{
    SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
    {
        DbType = DbType.SqlServer,
        ConnectionString = builder.Configuration.GetConnectionString("conn"),
        IsAutoCloseConnection = true
    });
    return db;
});

5.0添加Model文件夹,并且创建类Apistudy代码如下:
类:数据库中的表以及字段的属性

    public class Apistudy
    {
        [SugarColumn(IsPrimaryKey = true)]
        public string Id { get; set; }
        public string Title { get; set; }
        public decimal OriPrice { get; set; }
        public decimal Price { get; set; }
        public string Desc { get; set; }
        public int Num { get; set; }
        public string Image { get; set; }
        public string Tag { get; set; }
        public int CommentCount { get; set; }
        public decimal GoodCommentRate { get; set; }
        public DateTime CreateTime { get; set; }
    }

6.0下面我们去写Api,通过Api访问成功,从而后台自动创建好数据库的表和字段。

数据库和表
//创建控制器,自动生成数据库和表和字段
app.MapGet("/api/codefirst", (ISqlSugarClient db) =>
{
    db.DbMaintenance.CreateDatabase();
    var tblist = db.DbMaintenance.GetTableInfoList();
    if (tblist != null && tblist.Count > 0)
    {
        tblist.ForEach(p =>
        {
            db.DbMaintenance.DropTable(p.Name);

        });
    }
    // 生成表
    // 生成表
    string nspace = "MiniApi.Model";
    Type[] ass = Assembly.LoadFrom(AppContext.BaseDirectory + "MiniApi.dll").GetTypes()
    .Where(p => p.Namespace == nspace).ToArray();
    db.CodeFirst.SetStringDefaultLength(200).InitTables(ass);
    return "访问成功,成功添加数据库和表";
});
app.Run();

浏览器效果展示:
在这里插入图片描述

数据展示:
在这里插入图片描述

添加字段:

下面,我们继续往数据库中添加字段:

//创建控制器,自动生成数据库和表和字段
app.MapGet("/api/codefirst", (ISqlSugarClient db) =>
{
    db.DbMaintenance.CreateDatabase();
    var tblist = db.DbMaintenance.GetTableInfoList();
    if (tblist != null && tblist.Count > 0)
    {
        tblist.ForEach(p =>
        {
            db.DbMaintenance.DropTable(p.Name);

        });
    }
    // 生成表
    // 生成表
    string nspace = "MiniApi.Model";
    Type[] ass = Assembly.LoadFrom(AppContext.BaseDirectory + "MiniApi.dll").GetTypes()
    .Where(p => p.Namespace == nspace).ToArray();
    db.CodeFirst.SetStringDefaultLength(200).InitTables(ass);
    // Model中的类名
    List<Apistudy> list = new List<Apistudy>();
    for (int i = 1; i <= 50; i++)
    {
        string tag = string.Empty;
        if (i < 5)
        {
            tag = "新品";
        }
        else if (i > 8 && i <= 20)
        {
            tag = "活动";
        }
        list.Add(new Apistudy()
        {
            Id = Guid.NewGuid().ToString(),
            Title = "Apple iPhone 13 (A2634) 128GB 星光色 支持移动联通电信5G 双卡双待手机【快充套装】",
            OriPrice = 15999 + i,
            Price = 13999 + i,
            Desc = "【机不可失】指定iPhone13领券立减600元加9元即可购买快充套装,限时限量现在领取!更多优惠请猛戳",
            Num = 500 + i,
            Image = "/img/ipad.jpeg",
            Tag = tag,
            CommentCount = 999 + i,
            GoodCommentRate = 88 + i,
            CreateTime = DateTime.Now
        });
    }
    list.Add(new Apistudy()
    {
        Id = Guid.NewGuid().ToString(),
        Title = "小米13 徕卡光学镜头 第二代骁龙8处理器 超窄边屏幕 120Hz高刷 67W快充 8+256GB 黑色 5G手机",
        OriPrice = 4299,
        Price = 4099,
        Desc = "【机不可失】第二代骁龙8移动平台 屏幕分辨率 2400*1080",
        Num = 899,
        Image = "/img/ipad.jpeg",
        Tag = "新品",
        CommentCount = 9999,
        GoodCommentRate = 99,
        CreateTime = DateTime.Now
    });
    db.Insertable(list).ExecuteCommand();
    return "访问成功,成功添加数据库和表,包括字段";
});
app.Run();

注:上面代码是创建数据库和表,以及字段的总代码,app.Run必须要在最后,要不控制器无效。

数据库最后访问Api后的效果如下:

在这里插入图片描述

中间件文件访问

1.0新建一个文件夹,名字为wwwroot直接回车,会出现下图文件夹,我们在里面放一些图片

在这里插入图片描述

wwwroot介绍:一般存放Html,Css,Js,img

2.0 静态资源中间件,启动项目,利用项目路径进行在浏览器中访问图片,从www后开始算路径,不包含www
我们在Program中进行去访问

app.UseStaticFiles();

效果如下:

在这里插入图片描述

3.0上面这样存放资源,很容易被黑客入侵了,从而拿走我们一些重要的文件,所有下面解决方案,自定义路径访问

// 自定义路径,进行去访问
var fileProvider = new PhysicalFileProvider(Path.Combine(builder.Environment.WebRootPath, "shopping")); //文件夹名字
var requestPath = "/dx";
// 静态资源中间件
app.UseStaticFiles(new StaticFileOptions
{
    FileProvider = fileProvider,
    // 自定义路径
    RequestPath = requestPath
});

效果如下:

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上进的宋晓刚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值