AspNet6InDepth
1.0.0
ภาพรวม ASP.NET 6
ASP.NET 6 พื้นฐาน
Program.cs
IMiddleware
interfaceRequestDelegate
app.Use
, app.Map
, app.MapWhen
, app.UseWhen
และ app.Run
app.UseStaticFiles();
app.UseCors();
ProblemDetails
มาตรฐานappsettings.{environment}.json
และอินเทอร์เฟซ IConfiguration
IOptions
IOptionsSnapshot
หรือ IOptionsMonitor
HttpContext
, HttpContext.Request
และ HttpContext.Response
Route
HttpGetAttribute
, HttpPostAttribute
, HttpPutAttribute
, HttpPatchAttribute
และ HttpDeleteAttribute
FromQuery
: รับค่าจากสตริงการสืบค้นFromRoute
: รับค่าจากข้อมูลเส้นทางFromForm
: รับค่าจากฟิลด์ฟอร์มที่โพสต์FromBody
: รับค่าจากเนื้อหาคำขอFromHeader
: รับค่าจากส่วนหัว HTTPIActionResult
หรือ ActionResult
Accept
Accept
เป็น application/xml
Accept
เป็น application/json
HTTP Patch
Compare
: ตรวจสอบว่าคุณสมบัติสองรายการในแบบจำลองตรงกันหรือไม่EmailAddress
: ตรวจสอบว่าสถานที่ให้บริการมีรูปแบบอีเมลหรือไม่Phone
: ตรวจสอบว่าสถานที่ให้บริการมีรูปแบบหมายเลขโทรศัพท์หรือไม่Range
: ตรวจสอบว่าค่าคุณสมบัติอยู่ในช่วงที่ระบุหรือไม่RegularExpression
: ตรวจสอบว่าค่าคุณสมบัติตรงกับนิพจน์ทั่วไปที่ระบุหรือไม่Required
: ตรวจสอบหากฟิลด์ไม่เป็นค่าว่างStringLength
: ตรวจสอบว่าค่าคุณสมบัติสตริงไม่เกินขีดจำกัดความยาวที่ระบุหรือไม่Url
: ตรวจสอบว่าคุณสมบัติมีรูปแบบ URL หรือไม่IHttpClientFactory.CreateClient();
gzip
AspNetCoreRateLimit
พร้อมผู้ให้บริการหน่วยความจำAspNetCoreRateLimit
และ AspNetCoreRateLimit.Redis
แพ็คเกจ nuget พร้อม Azure Cache สำหรับผู้ให้บริการ RedisILogger
วิธีการขยายlogger.LogTrace
ข้อความระดับการติดตามบันทึกlogger.LogDebug
บันทึกระดับการแก้ไขข้อบกพร่องlogger.LogInformation
ข้อความระดับข้อมูลบันทึกlogger.Warning
บันทึกข้อความระดับคำเตือนlogger.Error
บันทึกข้อความระดับข้อผิดพลาดlogger.Critical
บันทึกข้อความระดับวิกฤตAzure AppInsights
SDKIHostedService
BackgroundService
Swashbuckle.AspNetCore
nuget เพื่อเพิ่มการรองรับ Swagger OpenAPIswagger.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
System.IdentityModel.Tokens.Jwt
/api/Account/Register
เพื่อลงทะเบียนผู้ใช้/api/Account/Login
เพื่อเข้าสู่ระบบผู้ใช้และสร้างชุดโทเค็นการเข้าถึงและโทเค็นการรีเฟรชชุดเริ่มต้น/api/Account/Token
เพื่อรีเฟรชโทเค็นการเข้าถึงโดยใช้โทเค็นการรีเฟรชที่ส่งไป/api/Account/Revoke
เพื่อเพิกถอนโทเค็นการรีเฟรชเพิ่มการอนุญาต
IAuthorizationRequirement
HandleRequirementAsync
เพื่อสร้างข้อกำหนดนโยบายแบบกำหนดเองProgram.cs
กรณีศึกษา: เพิ่มการตรวจสอบสิทธิ์ JWT และการอนุญาตบทบาทโดยใช้ Auth0
จัดการการอัพโหลดไฟล์และการดาวน์โหลดไฟล์
wwwroot folder
.xlsx
เพื่อตอบสนองการทดสอบ
การทดสอบหน่วย
xUnit.net
[Fact]
และ [Theory]
Dispose
[InlineData]
[MemberData]
[ClassData]
IClassFixture
ICollectionFixture
Moq
Verify()
หรือ VerifyAll()
การทดสอบบูรณาการ
WebApplicationFactory
xUnit.net
การสื่อสารระหว่างบริการแบบซิงโครนัสโดยใช้ gRPC และ HTTP2
การสื่อสารระหว่างบริการแบบอะซิงโครนัสโดยใช้คิวข้อความ
การโฮสต์แอปพลิเคชัน ASP.NET 6 API