GraphQL > SQL은 데이터베이스에 저장된 데이터를 효율적으로 가져오는 것이 목적이지만 GQL은 클라이언트가 서버로부터 데이터를 효율적으로 가져오는 것이 목적이다. SQL과 GQL은 모두 쿼리 언어이지만 쿼리하는 대상이 다르다. SQL은 백엔드에서 작성 후 데
이 글은 GraphQL Docs를 읽고 정리한 것입니다. 쿼리 필드 GraphQL은 서버에서 클라이언트가 요청하는 필드를 정확히 알고 있기 때문에 쿼리와 결과가 정확히 동일한 형태이다. GraphQL 쿼리는 연관된 객체와 필드를 탐색할 수 있다. 따라서, 한 번의
이 글은 GraphQL Docs를 읽고 정리한 것입니다. 뮤테이션 뮤테이션 변경을 발생시키는 작업은 명시적으로 mutation을 통해 전송되는 것이 좋다 (앞서 정리한 query 타입의 경우 조회를 위한 것이다). 아래 예시의 경우 createReview 필드가 새
이 글은 GraphQL Docs를 읽고 정리한 글입니다. 스키마 타입 시스템 GraphQL 쿼리의 형태가 결과와 거의 일치하기 때문에 클라이언트는 서버에 대해 알지 못해도 결과를 예측할 수 있다. 그런데 이 때, 선택할 수 있는 필드가 무엇인지/ 객체의 종류는 무엇인
이 글은 GraphQL Docs를 읽고 정리한 글입니다. 타입 시스템을 이용해 GraphQL 쿼리의 유효성을 검증할 수 있다. 이 때 GraphQL은 타입 시스템 없이 쿼리를 실행할 수는 없다. 검증이 끝나면 쿼리 실행 결과가 반환 된다. GraphQL의 실행 타입
이 글은 GraphQL Docs를 읽고 정리한 글입니다. GraphQL 스키마가 지원하는 쿼리에 대한 정보를 확인하기 위해 introspection 시스템(스키마 확인 시스템)을 이용할 수 있다. 쿼리 방법 __schema 필드로 유효한 타입 확인하기 만약 어떤 유
Serving GraphQL with HTTP Web Request Pipeline 최신 웹 프레임워크들은 대부분 미들웨어 스택을 통과하는 파이프라인 모델을 사용한다. 이 때 GraphQL은 모든 인증 미들웨어의 뒤쪽에 위치해야 한다. GraphQL을 이용해 HTTP
이 글은 Grapehene Docs를 읽고 정리한 것입니다(조금 더 정확히는 graphene-django). Graphene > Graphene은 파이썬에서 code-first approach를 통해 GraphQL API를 구현하는 데 사용하는 라이브러리이다. Co
Types Reference Graphene은 Python의 일반적인 값을 나타내는 몇 가지 기본 types를 제공한다. 이 types는 query의 leaves에서 값을 보여주는 역할을 한다(GraphQL은 그래프이고 이 그래프의 leaf node는 해당 값이 된다고
Resolvers Resolver는 스키마의 필드에 해당하는 데이터를 가져와서 쿼리 하는 데 도움을 주기 위한 메소드이다. Resolver는 lazy 실행이기 때문에 만약 resolver가 정의된 필드가 쿼리에 포함되지 않는다면 해당 resolver는 실행되지 않는다.
Enums Enum은 unique, constant 값을 설정하기 위해 사용하는 GraphQL 타입이다. 아래와 같이 Episode enum class를 만들 수 있다. 방법 1 방법 2 만약 사용하려는 Enum이 이미 정의되어 있다면 Enum.f
이 글은 Graphene Docs를 읽고 작성한 것입니다. Union Union 타입은 필드를 갖지 않으며 다만 다른 ObjectType들의 모임(?)으로 이루어진다. 또한, Union 타입을 정의할 때는 types만 명시해 연결하는 역할을 하며 field를 추가할
Middleware Middleware는 schema 내의 필드를 검사 하기 위해 사용할 수 있다. 어떤 객체, 함수든resolve(next_middleware, *args)에 응답할 수 있다면 middleware가 될 수 있다. resolve(next_middlew
Dataloader > Dataloader를 이용하면 GraphQL에서 발생할 수 있는 N+1 problem을 해결할 수 있다. Dataloader는 현재 사용하는 앱에서 데이터를 가져오는 데 사용할 수 있는 fetching layer로, 이를 이용하면 데이터베이스나
Query Validation GraphQL로 쿼리를 실행하면 Query AST가 쿼리가 유효 하며 실행 가능한 상태인지 확인한다. 아래에 자주 사용되는 validator와 custom validator에 대해 소개한다. 추상 구문 트리(abstract syntax
Graphene Node에 대해 공부하기에 앞서 GraphQL에서 사용하는 cursor 개념 자체를 먼저 알아보도록 한다. Cursor 페이지네이션에는 두 가지 개념이 있다. offset/limit 기반 cursor 기반 apollographql에서 설명하는 off