1-2-1. Strawberry graphql 스키마 기초 개요 #Schema #basics

GraphQL 서버는 스키마를 사용하여 데이터의 모델을 설명할 수 있다. 데이터 테이블에 필드가 있는 유형 의 계층 구조를 정의한다. 또한 클라이언트가 실행할 수 있는 query(읽기) 와 mutation(쓰기, 수정)을 제공한다.

스키마의 기본과 Strawberry를 사용하여 빌드하는 방법에 대해 알아보자

스키마 정의 언어(SDL : Schema definition language)

GraphQL 서버 스키마를 생성하는 방법에는 두 가지가 있다. 하나는 "스키마" 우선 방식 그리고 또 다른 하나는 "코드" 우선 방식 이다. Strawberry 는 코드 우선 방식으로 정의한 스키마만 지원한다. 코드 우선 방식으로 들어가기 전에 스키마 정의가 무엇인지 알아보자.

스키마(Schema)는 GraphQL 사양에 포함된 GraphQL의 스키마 정의 언어를 사용함으로써 작동하는 것을 의미한다.

SDL을 사용하여 정의한 스키마의 예시

type Book {
  title: String!
  author: Author!
}

type Author {
  name: String!
  books: [Book!]!
}

스키마는 이들 사이의 모든 유형과 관계를 정의한다. 이를 통해 클라이언트 개발자는 사용 가능한 데이터를 확인하고 해당 데이터를 특정하여 하위 집합을 요청할 수 있다.

@ !(느낌표) 필드가 null을 허용하지 않음을 지정한다.

스키마는 데이터를 가져오는 방법을 지정하지 않는다. 나중에 리졸버를 정의할 때 구현한다.

코드 우선 접근 방식

위에 언급했듯이 Strawberry는 코드 우선 접근 방식을 사용한다. 아래 예시를 보면 쉽게 이해 할 수 있다.

import typing
import strawberry


@strawberry.type
class Book:
    title: str
    author: "Author"


@strawberry.type
class Author:
    name: str
    books: typing.List["Book"]

파이썬의 힌트 기능 덕분에 코드가 스키마와 거의 일대일로 매핑된다.

데이터를 가져오는 방법도 지정하지 않는다는 점에 유의하자. 이에 대해서는 resolvers(리졸버) 에서 설명하기로 한다.

댓글

이 블로그의 인기 게시물

북궐도 2.0

Python Strawberry GraphQL 예제 (feat. #sqlmodel, #mysql)

Arch 계열 리눅스 구글 크롬 설치