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# POCO에 구성 바인딩IOptionsSnapshot<T> 또는 IOptionsMonitor<T> 인터페이스를 사용하여 런타임에 강력한 형식의 C# POCO에 다시 로드할 수 있는 구성을 바인딩합니다.HttpContext , HttpContext.Request 및 HttpContext.Response 이해Route 속성을 사용하여 여러 경로를 컨트롤러에 바인딩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 : 필드가 null이 아닌지 확인합니다.StringLength : 문자열 속성 값이 지정된 길이 제한을 초과하지 않는지 확인합니다.Url : 속성에 URL 형식이 있는지 확인합니다.IHttpClientFactory.CreateClient();gzip 알고리즘을 사용하여 응답 압축 추가AspNetCoreRateLimit nuget 패키지를 사용하여 속도를 제한합니다.AspNetCoreRateLimit 및 AspNetCoreRateLimit.Redis nuget 패키지를 사용한 속도 제한.ILogger<T> 확장 메서드를 사용하여 로그logger.LogTrace 로그 추적 수준 메시지logger.LogDebug 로그 디버그 수준 메시지logger.LogInformation 로그 정보 수준 메시지logger.Warning 로그 경고 수준 메시지logger.Error 로그 오류 수준 메시지logger.Critical 로그 중요 수준 메시지Azure AppInsights SDK를 사용하여 로그IHostedService 인터페이스를 사용하여 호스팅 서비스 구현BackgroundService 클래스를 재정의하여 백그라운드 서비스 구현Swashbuckle.AspNetCore 너겟을 설치하세요.swagger.json 제공하도록 swagger 경로 접두사를 변경합니다.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> 상속하여 사용자 지정 웹 애플리케이션 팩토리 만들기xUnit.net 사용하여 API에 대한 통합 테스트 작성gRPC 및 HTTP2를 사용한 동기식 서비스 간 통신
메시지 큐를 사용한 비동기 서비스 간 통신
ASP.NET 6 API 애플리케이션 호스팅