NetCore开发API基础配置

NetCore开发API基础配置

项目地址

https://gitee.com/Lionel_10/net-core-tourist-api

SQL Server Visual Studio配置

  • window Visual Studio的view SQL Server Object Explorer
  • 看到SQL Server工具自带的数据库

MAC SQL Server Docker配置

  • 下载Docker Desktop可视化工具
  • docker pull mcr.microsoft.com/mssql/server:2022-latest
  • docker images 查看镜像
  • docker run -e ‘ACCEPT_EULA=Y’ -e ‘SA_PASSWORD=PaSSword12!’ - p 1433:1433 -d mcr.microsoft.com/mssql/server
  • 用户名是SA,密码是PaSSword12!,1433:1433端口 mcr.microsoft.com/mssql/server镜像名称
  • window要双引号”ACCEPT_EULA=Y” “SA_PASSWORD=PaSSword12!”
  • docker logs 容器ID 查看错误信息

下载依赖

  • 右键Manage Nuget Packages

  • Microsoft.EntityFrameworkCore

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
是 EF Core 的核心库,所有项目都必须引入它。

作用:
提供 EF Core 的基本功能,例如:

ORM(对象关系映射)

DbContext 类

DbSet<T>(数据库表对应的集合)

Change Tracking(变更跟踪)

LINQ 查询支持

不依赖于特定数据库,属于数据库无关的“通用层”
  • Microsoft.EntityFrameworkCore.SqlServer
1
2
3
4
5
6
是 EF Core 用来连接 SQL Server 的提供程序(Provider)。

作用:
让 EF Core 能够和 SQL Server 通信(翻译成 SQL 语句)

提供 SQL Server 特有的数据类型、函数、行为支持
  • Microsoft.EntityFrameworkCore.Tools
1
2
3
4
5
6
7
8
9
10
作用:
支持以下命令:

dotnet ef migrations add

dotnet ef database update

dotnet ef dbcontext scaffold(反向生成模型)

提供迁移管理、数据库初始化等功能

MAC创建数据库

  • 安装dotnet ef,EF Core CLI 的版本需要 与项目的 .NET SDK 版本匹配
1
dotnet tool install --global dotnet-ef --version 7.0.14
  • 添加迁移文件
1
dotnet ef migrations add InitialMigratio
  • 根据你的模型创建数据库并生成对应的数据表。
1
dotnet ef database update

DTO数据传输对象,防止暴露系统的业务核心,输出数据无法精细调整

  • AutoMapper.Extensions.Microsoft.Dependencylnjection
1
2
using AutoMapper;
builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());

JWT

JWT(JSON Web Token)是一种开放标准(RFC 7519),用于在网络应用环境间安全地传递声明信息,常用于用户认证和授权。下面是 JWT 的原理解析,包括其结构、签名机制、使用流程和安全注意点。

使用流程
  • 用户登录时,后端验证用户名密码无误后,生成 JWT,并返回给客户端。

  • 客户端存储JWT(通常放在 localStorage 或 sessionStorage)。

  • 后续每次请求,客户端将 JWT 作为请求头传递:

  • 后端收到后校验签名、验证是否过期,若通过就允许访问资源

优点
  • 无状态:不依赖服务器端 session,易于分布式部署。

  • 跨语言:基于标准格式,各种语言都支持。

  • 信息完整性强:签名可验证内容是否被篡改

Microsoft.AspNetCore.Authentication.JwtBearer

生成JWT

Microsoft.AspNetCore.Identity.EntityFrameworkCore

处理用户认证和角色管理

Stateless

轻量级状态机库,它的作用就是帮你管理状态转换的流程和规则,让代码逻辑更清晰、结构更优雅,特别适合这种订单、支付、审批等有“状态流转”的场景。

System.Linq.Dynameic.Core

把字符串变成 LINQ 表达式,让你的查询可以更灵活、更动态、更可配置。做那种 “搜索 + 筛选 + 排序 + 分页” 的 API,这个库能帮大忙。

docker部署

  • 项目添加docker

  • Dockerfile文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

    FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
    WORKDIR /app
    EXPOSE 80
    EXPOSE 443

    FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
    WORKDIR /src
    COPY ["FakeXiecheng.csproj", "./"]
    RUN dotnet restore "./FakeXiecheng.csproj"
    COPY . .
    WORKDIR "/src/."
    RUN dotnet build "FakeXiecheng.csproj" -c Release -o /app/build

    FROM build AS publish
    RUN dotnet publish "FakeXiecheng.csproj" -c Release -o /app/publish /p:UseAppHost=false

    FROM base AS final
    WORKDIR /app
    COPY --from=publish /app/publish .
    ENTRYPOINT ["dotnet", "FakeXiecheng.dll"]
  • 命令行,进入项目目录

1
2
3
4
5
6
7
8
// 镜像构建
docker build -t testapi .

// 查看镜像是否存在
dokcker images

// 运行镜像
docker run -d --name testapi -p 8080:80 testapi