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 應用程式