
Django & GraphQL
Django를 사용한 GraphQL, Strawberry/Graphene, schema, queries, mutations, subscriptions, 인증, DataLoader, N+1 문제
1GraphQL이란 무엇이며 REST와의 주요 차이점은 무엇인가요?
GraphQL이란 무엇이며 REST와의 주요 차이점은 무엇인가요?
답변
GraphQL은 Facebook이 개발한 API용 query 언어입니다. 고정된 데이터 구조를 반환하는 여러 endpoint를 노출하는 REST와 달리, GraphQL은 단일 endpoint를 사용하여 클라이언트가 필요한 데이터를 정확히 지정할 수 있게 합니다. 이는 REST에서 흔히 발생하는 over-fetching(너무 많은 데이터 수신)과 under-fetching(여러 요청을 해야 함) 문제를 해결합니다.
2Django에서 사용할 수 있는 두 가지 주요 GraphQL 라이브러리는 무엇인가요?
Django에서 사용할 수 있는 두 가지 주요 GraphQL 라이브러리는 무엇인가요?
답변
Strawberry와 Graphene-Django는 Django용 두 가지 주요 GraphQL 라이브러리입니다. Graphene-Django는 더 성숙하고 널리 채택되어 있으며 클래스 기반 구문을 사용합니다. Strawberry는 더 현대적이며 네이티브 Python type hints를 사용하고 타입 검사 도구와의 통합이 더 우수합니다. Strawberry는 더 pythonic한 구문과 네이티브 async 지원 덕분에 신규 프로젝트에 권장됩니다.
3Django User 모델을 표현하기 위해 Strawberry로 간단한 GraphQL 타입을 정의하려면 어떻게 해야 하나요?
Django User 모델을 표현하기 위해 Strawberry로 간단한 GraphQL 타입을 정의하려면 어떻게 해야 하나요?
답변
Strawberry에서는 @strawberry.type 데코레이터를 dataclass 클래스에 사용하여 GraphQL 타입을 정의합니다. 필드는 표준 Python type hints(str, int 등)로 선언됩니다. 이 접근 방식은 Python의 네이티브 타입 시스템을 활용하여 코드를 더 읽기 쉽게 만들고 IDE 및 mypy와 같은 타입 검사 도구와의 통합을 향상시킵니다.
GraphQL에서 resolver란 무엇이며 그 역할은 무엇인가요?
GraphQL에서 Query와 Mutation의 차이점은 무엇인가요?
+21 면접 질문