언어 선택
API
GraphQL이란?
GraphQL 개념 및 역할
GraphQL은 쿼리 언어이자 애플리케이션 프로그래밍 인터페이스(API)를 위한 서버측 런타임으로, 클라이언트에게 요청한 만큼의 데이터를 제공하는 데 우선 순위를 둡니다.
GraphQL은 API를 더욱 빠르고 유연하며 개발자 친화적으로 만들기 위해 설계되었습니다. GraphiQL이라 알려진 통합 개발 환경(Integrated Development Environment, IDE) 내에 배포될 수도 있습니다. REST를 대체할 수 있는 GraphQL은 개발자가 단일 API 호출로 다양한 데이터 소스에서 데이터를 끌어오는 요청을 구성할 수 있도록 지원합니다.
또한 GraphQL은 API 유지 관리자에게 기존 쿼리에 영향을 미치지 않고 필드를 추가하거나 폐기할 수 있는 유연성을 부여합니다. 개발자는 자신이 선호하는 방식으로 API를 빌드할 수 있으며, GraphQL 사양은 이러한 API가 예측 가능한 방식으로 작동하도록 보장합니다.
GraphQL 쿼리 언어: 스키마(schema) 및 리졸버(resolver) 개념
API 개발자는 GraphQL을 사용해 클라이언트가 서비스를 통해 쿼리할 가능성이 있는 모든 데이터를 설명하는 스키마를 생성합니다.
GraphQL 스키마는 개체 유형으로 구성되어 어떤 종류의 개체를 요청할 수 있으며 어떠한 필드가 있는지 정의합니다.
쿼리가 수신되면 GraphQL은 스키마에 대해 쿼리를 검증한 후 검증된 쿼리를 실행합니다.
API 개발자는 스키마의 각 필드를 리졸버라고 불리는 기능에 첨부합니다. 실행 중 값을 생산하기 위해 리졸버가 호출됩니다.
Graphql-spec 리포지토리에 명시된 API 쿼리 구문을 정의하고 검증하는 것 외에도 GraphQL은 대부분의 의사 결정을 API 설계자에게 맡깁니다. GraphQL은 개발자가 PHP(graphql-php), Scala(Sangria), Python(Graphene Python), Rub (graphql-ruby), JavaScript(graphql.js) 등을 사용할 수 있다는 식의 데이터 저장 방식이나 사용할 프로그래밍 언어에 대한 어떠한 지침도 제공하지 않습니다. 덕분에 네트워크, 인증, 페이지 분할 등의 필수 사항이 없습니다.
클라이언트 입장에서 가장 흔한 GraphQL 작업은 쿼리와 변형입니다. 이를 생성, 읽기, 업데이트, 삭제(CRUD) 모델로 생각해 보자면, 쿼리는 읽기와 동일한 과정입니다. 이외 모든 작업(생성, 업데이트, 삭제)는 변형을 통해 이루어집니다.