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 | 是 EF Core 的核心库,所有项目都必须引入它。 |
- Microsoft.EntityFrameworkCore.SqlServer
1 | 是 EF Core 用来连接 SQL Server 的提供程序(Provider)。 |
- Microsoft.EntityFrameworkCore.Tools
1 | 作用: |
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 | using AutoMapper; |
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 | // 镜像构建 |