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.Response
Route
屬性將多個路由綁定到控制器HttpGetAttribute
、 HttpPostAttribute
、 HttpPutAttribute
、 HttpPatchAttribute
和HttpDeleteAttribute
FromQuery
:從查詢字串中取得值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.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<T>
加入資料庫中的模型表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<TStartup>
建立自訂Web應用程式工廠xUnit.net
編寫 API 整合測試使用 gRPC 和 HTTP2 的同步服務間通信
使用訊息隊列的非同步服務間通信
託管 ASP.NET 6 API 應用程式