Getting Started with GraphQL in .NET
- GraphQL은 REST API, gRPC와 함께 API 구축의 중요한 부분이며, 특히 대기업에서 주요 API 구축 방식으로 사용되고 있음 🚀
- Hot Chocolate와 같은 도구 덕분에 GraphQL API 구축이 쉬워져 소규모 회사에서도 많이 사용됨. GraphQL API의 유연성은 매우 뛰어나 누구나 구축 방법을 알아야 함 💡
- Hot Chocolate 템플릿을 사용하여 GraphQL 서버를 쉽게 구축할 수 있음.
dotnet new install HotChocolate.Templates
명령어로 템플릿 설치 가능 💻
- GraphQL에는 Query, Mutation, Subscription 세 가지 루트 타입이 있음. Query는 읽기 전용 작업, Mutation은 데이터 변경, Subscription은 서버 이벤트 구독에 사용됨 🛠️
- GraphQL에서 resolver는 사용자가 특정 필드를 요청할 때 데이터를 반환하는 역할. .NET의 메서드와 유사하며, GraphQL 타입은 .NET의 클래스와 유사함 ⚙️
- GraphQL은 REST와 달리 요청을 설계하는 것이 아니라 스키마를 기반으로 쿼리함. 스키마는 비즈니스 레이어를 풍부하게 노출하는 얇은 레이어 역할을 함 🌐
- 프론트엔드 엔지니어는 GraphQL 서버를 통해 필요한 데이터 형태를 직접 쿼리할 수 있음. GraphQL 서버는 다양한 백엔드 인프라를 통합하는 BFF(Backend For Frontend) 역할을 수행함 🎨
- Hot Chocolate에서는 Query Type을 여러 클래스로 분리하여 관리할 수 있음. 이를 통해 코드를 더 체계적으로 유지할 수 있음 🗂️
- GraphQL resolver에서는 의존성을 주입하여 사용. 실행 엔진은 이를 분석하여 효율적으로 실행함 💉
- EF Core를 사용하여 데이터베이스 연동을 쉽게 구현할 수 있음. 데이터베이스 컨텍스트를 서비스로 등록하고, 마이그레이션을 통해 스키마를 관리함 💾
- GraphQL에서는 필드가 복합 타입을 반환할 경우, 어떤 데이터를 가져올지 명시해야 함. 이는 클라이언트 컴포넌트의 특정 요구사항을 충족하기 위함 🧩
- Query Context를 사용하여 데이터베이스 쿼리를 최적화할 수 있음. 필요한 필드만 선택적으로 가져와 불필요한 데이터 전송을 줄임 ✅
- GraphQL은 페이지네이션을 위한 내장 컨셉을 제공. Offset pagination의 단점을 보완하여 더 나은 성능과 일관성을 제공함 📄
- Hot Chocolate에서는
[UsePaging]
어트리뷰트를 사용하여 페이지네이션을 쉽게 구현할 수 있음. 이를 통해 대량의 데이터를 효율적으로 관리할 수 있음 🧮