[GraphQL]기본 개념

Philip Sung·2023년 6월 16일
0

[API]

목록 보기
1/1
post-thumbnail

01 개요

본 문서에서는 REST API / RESTful API와 같이 클라이언트-서버 간 정보요청 및 응답을 위해 사용하는 API를 만들기 위한 쿼리 언어인 GraphQL에 관한 기본적인 내용들을 다룬다.

최종수정일 : 2023.06.16




02 기본개념

GraphQL은 특정한 API가 아니라, 임의의 API 서버를 구축하기 위해 사용할 수 있는 쿼리 언어이다. 특정 엔진에서 실행되는 프로그래밍 언어가 아니라 클라이언트와 서버 간의 통신 명세이다.
어떤 API 서버를 실행하던 간에 GraphQL을 사용하기 위하여서는

스키마(schema) : 어떤 데이터를 사용할 것인가?
리졸버(resolver) : 어떻게 데이터를 가져올 것인가?

두 가지 사항을 정의해주어야 한다. 많은 경우 API 서버 라이브러리에 이 두 가지 사용자정의 영역을 변수로 넘겨 서버를 구축한다.

GraphQL 명세에 따라 구축된 API 서버는 구현에 상관없이 스키마에 따르는 데이터 조회/수정을 요청하는 쿼리 언어를 입력으로 받아, 리졸버에 따라 데이터를 반환하거나 수정한다.




03 GraphQL 쿼리 언어

03.01 쿼리와 뮤테이션

# query and mutation
rootType queryName{
	collectionName(queryArgument) {
		fieldName
		fieldNickname : fieldName
	}
	collectionNickname : collectionName {
		fieldName
		fieldName
	}
}

rootType - [query | mutation | subscription]
루트 타입은 '하나의 작업'을 의미한다.

CollectionName : [collectionNickname] : collectionNameValue
데이터를 가져올 컬렉션을 입력한다. 해당 컬렉션에 대해 다른 이름으로 응답을 받고 싶은 경우 collectionNickname을 입력한다.

queryArgument - field : value
필터링 해서 가져오고자 하는 데이터가 가지고 있는 필드와 값을 입력한다.

fieldName - [fieldNickname] : fieldName
컬렉션에서 받아오고자 하는 필드의 이름을 입력한다. 해당 필드에 대해 다른 이름으로 응답을 받고 싶은 경우 fieldNickname을 입력한다.

03.01.01 응답

{
	"data": {
		"collectionName": 
}

쿼리의 데이터필드는 스칼라(scalar) 타입과 객체(object) 타입 중 하나에 속한다.

스칼라 타입 : int, float, string, boolean, id
객체 타입 : 스키마에 정의한 필드를 그룹으로 묶어 둔 모든 형태

profile
Philip Sung

0개의 댓글