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<T>接口将配置绑定到强类型 C# POCOIOptionsSnapshot<T>或IOptionsMonitor<T>接口将可在运行时重新加载到强类型 C# POCO 的配置绑定HttpContext 、 HttpContext.Request和HttpContext.ResponseRoute属性将多个路由绑定到控制器HttpGetAttribute 、 HttpPostAttribute 、 HttpPutAttribute 、 HttpPatchAttribute和HttpDeleteAttributeFromQuery :从查询字符串中获取值FromRoute :从路线数据中获取值FromForm :从发布的表单字段获取值FromBody :从请求正文中获取值FromHeader :从 HTTP 标头获取值IActionResult<T>或ActionResult<T>处理响应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<T>扩展方法进行日志记录logger.LogTrace日志跟踪级别消息logger.LogDebug日志调试级别消息logger.LogInformation日志信息级别消息logger.Warning日志警告级别消息logger.Error日志错误级别消息logger.Critical记录关键级别消息Azure AppInsights SDK 进行日志记录IHostedService接口实现托管服务BackgroundService类来实现后台服务Swashbuckle.AspNetCore nuget 以添加 Swagger OpenAPI 支持swagger.jsonASP.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<T>添加到数据库中的模型表DbContextidempotent选项添加迁移/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-db8c9aa55646ASP.NET 6 API 应用程序中的响应缓存
IMemoryCache添加内存缓存StackExchange.Redis添加分布式缓存ASP.NET 6 API 应用程序的安全性
添加身份验证
Claim , ClaimsIdentity和ClaimsPrincipalBCrypt.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<TStartup>创建自定义Web应用程序工厂xUnit.net编写 API 集成测试使用 gRPC 和 HTTP2 的同步服务间通信
使用消息队列的异步服务间通信
托管 ASP.NET 6 API 应用程序