만일 GraphQL의 개념과 특징에 대해서 궁금하면 아래 링크를 누르시면 됩니다.
https://zeuskwon-ds.tistory.com/72?category=1033905
GraphQL의 구조
아래 이미지는 Python Flask를 활용한 GraphQL 구조도를 그려보았다.
- Resolver : 데이터 엑세스 및 조작을 위한 임의의 함수
- Ariadne : GraphQL 쿼리언어를 구체화해주는 파이썬 라이브러리
클라이언트가 GraphQL쿼리를 통해서 데이터를 POST로 요청하면 API에서 쿼리를 받는다.
그리고 그 쿼리를 Ariadne라는 라이브러리로 컴파일한 후 Resolver로 보내준다.
Resolver는 DB에 접근해서 클라이언트가 요청한 데이터를 가져와서 Return 해주는 구조로 되어있다.
GraphQL의 조회, 생성, 삭제, 수정 등 모든 요청은 POST로 처리함( 그 이유는 아래에서 설명)
GraphQL 쿼리
GraphQL은 SQL을 바탕으로 만들어진 쿼리언어이기 때문에 SQL 문법과 비교학습을 통해 보다 쉽게 이해할 수 있다. 위 그림처럼 원하는 테이블을 설정하고 가져올 데이터를 GraphQL쿼리로 작성하면 됨
* GraphQL이 POST 요청만 하는 이유
REST API에서는 수정, 조회가 필요할 때 여러번 요청해야 한다. 하지만 GraphQL은 한번의 쿼리 요청으로 REST의 여러번 요청했을때와 같은 효과를 얻을 수 있다.
위 그림을 보면 여러 REST API(수정, 조회) SQL요청을 오른쪽 GraphQL에서는 한번에 처리하는 것을 볼 수 있다. GraphQL이 만약 GET, POST, DELETE를 모두 쓴다면 이러한 장점을 살릴 수 없게 된다.
그래서 GraphQL은 통상적으로 POST로 모든 조회, 수정, 삭제를 요청한다.
다음 포스팅에서는 실제로 GraphQL을 구현하는 예시를 작성
https://zeuskwon-ds.tistory.com/75
'BackEnd' 카테고리의 다른 글
[GraphQL] GraphQL로 API 구현 예제 with python - 생성 (0) | 2022.06.30 |
---|---|
[GraphQL] GraphQL로 API 구현 예제 with python - 조회 (0) | 2022.06.30 |
[GraphQL] GraphQL의 개념과 장단점 2 (0) | 2022.06.27 |
[GraphQL] GraphQL의 개념과 장단점 1 (0) | 2022.06.27 |
REST, RESTful API 특징 및 구현 (0) | 2022.05.02 |