[GraphQL] GraphQL의 구조 및 쿼리
BackEnd

[GraphQL] GraphQL의 구조 및 쿼리

728x90

만일 GraphQL의 개념과 특징에 대해서 궁금하면 아래 링크를 누르시면 됩니다.

https://zeuskwon-ds.tistory.com/72?category=1033905

 

[GraphQL]GraphQL의 개념과 장단점 1

이번 포스팅에서는 GraphQL에 대해서 알아보기전에 GraphQL은 새로운 프레임워크, 라이브러리가 아니라, 전혀 새로운 개념이라는 사실을 알기. 그럼 GraphQL에 대해서 알아보자 GraphQL이란? 이름에 왜

zeuskwon-ds.tistory.com

GraphQL의 구조

아래 이미지는 Python Flask를 활용한 GraphQL 구조도를 그려보았다.

  • Resolver : 데이터 엑세스 및 조작을 위한 임의의 함수
  • Ariadne : GraphQL 쿼리언어를 구체화해주는 파이썬 라이브러리

클라이언트가 GraphQL쿼리를 통해서 데이터를 POST로 요청하면 API에서 쿼리를 받는다.

그리고 그 쿼리를 Ariadne라는 라이브러리로 컴파일한 후 Resolver로 보내준다.

Resolver는 DB에 접근해서 클라이언트가 요청한 데이터를 가져와서 Return 해주는 구조로 되어있다.

 

GraphQL의 조회, 생성, 삭제, 수정 등 모든 요청은 POST로 처리함( 그 이유는 아래에서 설명)

GraphQL 쿼리

GraphQL API를 만들어보기에 앞서 GraphQL 쿼리에 대해서 알아보자.

출처 - https://dgraph.io/learn/courses/datamodel/sql-to-dgraph/develop/graphql-syntax/

GraphQL은 SQL을 바탕으로 만들어진 쿼리언어이기 때문에 SQL 문법과 비교학습을 통해 보다 쉽게 이해할 수 있다. 위 그림처럼 원하는 테이블을 설정하고 가져올 데이터를 GraphQL쿼리로 작성하면 됨

* GraphQL이 POST 요청만 하는 이유

REST API에서는 수정, 조회가 필요할 때 여러번 요청해야 한다. 하지만 GraphQL은 한번의 쿼리 요청으로 REST의 여러번 요청했을때와 같은 효과를 얻을 수 있다.

출처 - https://dgraph.io/learn/courses/datamodel/sql-to-dgraph/develop/graphql-syntax/

위 그림을 보면 여러 REST API(수정, 조회) SQL요청을 오른쪽 GraphQL에서는 한번에 처리하는 것을 볼 수 있다.  GraphQL이 만약 GET, POST, DELETE를 모두 쓴다면 이러한 장점을 살릴 수 없게 된다.

 

그래서 GraphQL은 통상적으로 POST로 모든 조회, 수정, 삭제를 요청한다.

 

다음 포스팅에서는 실제로 GraphQL을 구현하는 예시를 작성

 

https://zeuskwon-ds.tistory.com/75

 

[GraphQL] GraphQL로 API구현(조회)

GraphQL 라이브러리 GraphQL 자체는 쿼리 언어이기 떄문에 구체화할 수있는 언어와 라이브러리가 필요 GraphQL의 라이브러리는 아래 링크를 참고하면 된다. https://graphql.org/code/ GraphQL Code Libraries, To..

zeuskwon-ds.tistory.com

 

728x90