본문 바로가기
반응형

전체 글653

C# record에 대해서 알아보자 record 사용 예제C# 9.0에서 추가값 중심의 불변성(Immurable) 객체public record GiveItemRequest(int itemId, int itemCount);C# 레코드(record) 타입 문법을 사용한 불변(Immutable) 데이터 모델을 정의한다.간단히 말하자면 요청을 표현하는 데이터 전용 객체(DTO)를 아주 간결하게 표현한 것이다. 위에 코드를 풀어서 작성해 보자면, 이러한 형태가 된다.public class GiveItemRequest{ public int itemId { get; init; } public int itemCount { get; init; } public GiveItemRequest(int itemId, int itemCount) =>.. 2025. 4. 26.
Entity Framework에서 [NotMapped] 속성 [NotMapped]란?해당 어노테이션이 들려있다면 이는 EF의 모델과 데이터베이스 간 매핑 대상에서 제외한다는 뜻이다.DB 테이블에는 존재하지 않음EF가 이 속성을 INSERT/SELECT/UPDATE에 포함하지 않음계산용, 임시 상태 저장용, DTO 전용 속성등으로 사용된다.[NotMapped]public SomeType SomeProperty { get; set; }대표적인 사용 예시FirstName, LastName은 각각 string 컬럼으로 DB에 생성되지만 FullName은 DB에 생성되지 않는다.코드에서 자유롭게 사용되고 특정한 용도로 활용된다.public class User{ public string FirstName { get; set; } public string LastN.. 2025. 4. 26.
C# is 패턴 매칭(Pattern Matching)에 대해서 알아보자 is 패턴 매칭C# 패턴 매칭(Pattern Matching)은 "값의 타입이나 구조를 검사하면서 동시에 추출" 할 수 있게 해주는 기능이다.타입 체크 + 캐스팅을 한 번에 실행is not 패텀 매칭은 C# 9.0 이상에서 사용 가능is 패턴obj가 string 타입이면 true동시에 s라는 이름으로 형변환된 값을 바로 사용 가능if (obj is string s){ Console.WriteLine($"문자열 길이: {s.Length}");}is not 패턴obj가 string 타입이 아니면 true아닐 경우에만 countryString 사용이 가능하다.var country = "";if (country is not string countryString){ // country가 문자열이 아니면.. 2025. 4. 26.
도커(Docker) 컨테이너 내부로 파일 복사를 해보자 docker cp 명령어로 파일 복사docker로 컨테이너를 만들고 빌드를 하거나 특정한 함수를 실행하고 나온 결과를 내 로컬로 가져오고 싶은 경우들이 자주 발생한다.이때 사용하면 편한 명령어가 docker cp 명령어다. 사용법에 대해서 알아보자.기본 문법docker cp [호스트 경로] [컨테이너 이름 또는 ID]:[컨테이너 경로]">docker cp [호스트 경로] [컨테이너 이름 또는 ID]:[컨테이너 경로]로컬 -> 컨테이너로 복사docker cp [컨테이너 이름 또는 ID]:[컨테이너 경로] [호스트 경로]">docker cp [컨테이너 이름 또는 ID]:[컨테이너 경로] [호스트 경로]컨테이너 -> 로컬로 복사 위에 예시처럼 내 로컬과 컨테이너 내부 경로를 입력하면 파일을 복사하는 게 가능하.. 2025. 4. 26.
JWT를 활용해서 C# 서버에서 사용자 인증 처리하기 기본 흐름 요약클라이언트 → Authorization: Bearer ↓JwtBearer 미들웨어 ↓토큰 유효성 검사 (서명, 만료, Issuer, Audience 등) ↓성공 시 ClaimsPrincipal 생성 → HttpContext.User 에 주입클라이언트 JWT 생성 예제 코드public string GenerateJwtToken(string userId){ var claims = new[] { new Claim("sub", userId) }; var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("super-secret-key-here")); var creds = n.. 2025. 4. 23.
ASP.NET Core HTTP 요청 처리 흐름 알아보기 ASP.NET Core 요청 처리 흐름 기본 구조ASP.NET Core 미들웨어(Middleware) 구조는 파이프라인 기반이기 때문에, 미들웨어 > 컨트롤러 > 다시 미들웨어로 "되돌아오는 흐름"을 갖는다. 해당 흐름을 더 잘 이해하기 위해서 아래의 그림을 살펴보자. 가장 중요한 부분은 한번 지나갔던 미들웨어로 다시 되돌아온다는 것이다.┌──────────────────────────────┐│ 클라이언트 요청 (HTTP) │└──────────────┬───────────────┘ ▼ [ 미들웨어 1: 요청 처리 전 ] ▼ [ 미들웨어 2: 요청 처리 전 ] ▼ ... 여러 미들웨어 ... .. 2025. 4. 23.