AspNet6InDepth
1.0.0
ASP.NET 6 概述
ASP.NET 6 基础知识
Program.cs
文件IMiddleware
接口RequestDelegate
对象app.Use
、 app.Map
、 app.MapWhen
、 app.UseWhen
和app.Run
编写内联中间件app.UseStaticFiles();
app.UseCors();
ProblemDetails
响应appsettings.{environment}.json
和IConfiguration
接口读取配置IOptions
接口将配置绑定到强类型 C# POCOIOptionsSnapshot
或IOptionsMonitor
接口将可在运行时重新加载到强类型 C# POCO 的配置绑定HttpContext
、 HttpContext.Request
和HttpContext.Response
Route
属性将多个路由绑定到控制器HttpGetAttribute
、 HttpPostAttribute
、 HttpPutAttribute
、 HttpPatchAttribute
和HttpDeleteAttribute
FromQuery
:从查询字符串中获取值FromRoute
:从路线数据中获取值FromForm
:从发布的表单字段获取值FromBody
:从请求正文中获取值FromHeader
:从 HTTP 标头获取值IActionResult
或ActionResult
处理响应Accept
标头处理内容协商Accept
标头设置为application/xml
则发送 XML 响应Accept
标头设置为application/json
则发送 JSON 响应HTTP Patch
类型请求Compare
:验证模型中的两个属性是否匹配。EmailAddress
:验证属性是否具有电子邮件格式。Phone
:验证属性是否具有电话号码格式。Range
:验证属性值是否在指定范围内。RegularExpression
:验证属性值是否与指定的正则表达式匹配。Required
:验证字段是否不为空。StringLength
:验证字符串属性值是否未超过指定的长度限制。Url
:验证属性是否具有 URL 格式。IHttpClientFactory.CreateClient();
gzip
算法添加响应压缩AspNetCoreRateLimit
nuget 包和内存提供程序进行速率限制。AspNetCoreRateLimit
和AspNetCoreRateLimit.Redis
nuget 包与 Azure Cache for Redis 提供程序进行速率限制。ILogger
扩展方法进行日志记录logger.LogTrace
日志跟踪级别消息logger.LogDebug
日志调试级别消息logger.LogInformation
日志信息级别消息logger.Warning
日志警告级别消息logger.Error
日志错误级别消息logger.Critical
记录关键级别消息Azure AppInsights
SDK 进行日志记录IHostedService
接口实现托管服务BackgroundService
类来实现后台服务Swashbuckle.AspNetCore
nuget 以添加 Swagger OpenAPI 支持swagger.json
ASP.NET 6 API 应用程序中的数据访问
使用 Micro ORM Dapper 和 PostgreSQL 进行数据访问
/api/Persons?page=1&limit=10
/api/Persons?searchAfter=4499b79a-c710-45e4-ba87-083d22c4d6ad_2023-04-17T12:00:25&limit=10
/api/Persons/b1333cad-9d7c-4a64-8823-db8c9aa55646
获取单身/api/Persons
/api/Persons/b1333cad-9d7c-4a64-8823-db8c9aa55646
/api/Persons/b1333cad-9d7c-4a64-8823-db8c9aa55646
使用 EF Core 6 ORM 和 PostgreSQL 进行数据访问
DbSet
添加到数据库中的模型表DbContext
idempotent
选项添加迁移/api/Employees?page=1&limit=10
/api/Employees?searchAfter=4499b79a-c710-45e4-ba87-083d22c4d6ad_2023-04-17T12:00:25&limit=10
/api/Employees/b1333cad-9d7c-4a64-8823-db8c9aa55646
获取单身/api/Employees
/api/Employees/b1333cad-9d7c-4a64-8823-db8c9aa55646
/api/Employees/b1333cad-9d7c-4a64-8823-db8c9aa55646
ASP.NET 6 API 应用程序中的响应缓存
IMemoryCache
添加内存缓存StackExchange.Redis
添加分布式缓存ASP.NET 6 API 应用程序的安全性
添加身份验证
Claim
, ClaimsIdentity
和ClaimsPrincipal
BCrypt.Net-Next
nuget 对纯文本密码进行哈希处理System.IdentityModel.Tokens.Jwt
生成 JWT/api/Account/Register
注册用户/api/Account/Login
用于登录用户并生成一组初始访问令牌和刷新令牌/api/Account/Token
使用发送的刷新令牌刷新访问令牌/api/Account/Revoke
撤销刷新令牌添加授权
IAuthorizationRequirement
接口HandleRequirementAsync
以制定自定义策略要求Program.cs
中注册自定义需求案例研究:使用 Auth0 添加 JWT 身份验证和角色授权
处理文件上传和文件下载
wwwroot folder
中.xlsx
文件流式传输到响应测试
单元测试
xUnit.net
添加单元测试[Fact]
和[Theory]
Dispose
方法清理测试数据[InlineData]
传递原始参数[MemberData]
传递原始参数和复杂参数[ClassData]
传递原始参数和复杂参数IClassFixture
在同一类中共享测试上下文ICollectionFixture
在多个类之间共享测试上下文Moq
模拟依赖服务Verify()
或VerifyAll()
验证是否调用了模拟服务集成测试
WebApplicationFactory
创建自定义Web应用程序工厂xUnit.net
编写 API 集成测试使用 gRPC 和 HTTP2 的同步服务间通信
使用消息队列的异步服务间通信
托管 ASP.NET 6 API 应用程序