GraphQL 기본 개념 및 구조
Source
Evernote/Inbox/GraphQL 개념잡기 – tech.kakao.com.1.md
Summary
GraphQL은 페이스북에서 개발한 쿼리 언어로, 웹 클라이언트가 서버로부터 필요한 데이터만 효율적으로 가져오도록 설계되었습니다. REST API와 달리 단일 엔드포인트를 사용하며, 클라이언트가 요청하는 데이터 구조에 맞춰 응답을 반환합니다. 주요 구성 요소는 쿼리/뮤테이션, 스키마/타입, 리졸버로 나뉩니다. 쿼리는 데이터 읽기, 뮤테이션은 데이터 변조에 사용되며, 오퍼레이션 네임과 변수를 통해 동적 쿼리 작성이 가능합니다. 스키마는 데이터 구조를 정의하며, 리졸버는 실제 데이터 소스(DB, 파일, 외부 API 등)에서 데이터를 가져오는 로직을 구현합니다. 리졸버는 필드 단위로 호출되며, 그래프 구조의 데이터를 효율적으로 처리할 수 있습니다.
Key Points
- GraphQL은 클라이언트 중심의 쿼리 언어로, REST API 대비 단일 엔드포인트와 정밀한 데이터 요청이 가능함
- 쿼리(Query)는 데이터 읽기, 뮤테이션(Mutation)은 데이터 생성/수정/삭제에 사용되며, 내부적으로는 유사한 처리 방식
- 오퍼레이션 네임과 변수를 활용하여 동적 쿼리 작성이 가능하며, 이는 DB 프로시저와 유사한 역할
- 스키마(Schema)는 데이터 타입과 필드를 정의하며, C/C++ 헤더 파일 작성과 유사한 경험 제공
- 리졸버(Resolver)는 각 필드별 데이터 가져오기 로직을 구현하며, 다양한 데이터 소스(DB, 파일, HTTP 등) 연동 가능
- 리졸버 호출은 필드 단위로 이루어지며, 그래프 구조의 데이터를 깊이 우선 탐색(DFS) 방식으로 처리