[GraphQL] 1장. GraphQL 소개
GraphQL 기초 다지기
출처 : GraphQL 공식 레퍼런스
목차
- GraphQL 소개
- 쿼리와 뮤테이션
- 스키마와 타입
GraphQL 소개
1. GraphQL 이란?
1) 소개
- GraphQL은 API를 위한 쿼리 랭귀지이다.
- 쿼리 랭귀지 : 정보를 얻기 위해 보내는 질의문 (Query)를 만들기 위해 쓰이는 컴퓨터 언어의 일종
- 쿼리를 실행하기 위해 서버 사이드에서 runtime으로 돈다.
- 쿼리에는 미리 지정한 타입 시스템이 쓰인다.
2) 예제
-
GraphQL 서비스는 특정 타입으로 필드를 정의하면서 시작된다.
-
그리고 각 타입의 각 필드별로 함수를 제공한다
-
Ex) 로그인 한 사용자가 누구인지, 그 사용자의 이름이 무엇인지 보여주는 GraphQL
type Query { me: User } type User { id: ID name: String }
각 타입에는 함수가 동반된다.
function Query_me(request) { return request.auth.user; } function User_name(user) { return user.getName(); }
-
GraphQL 서비스가 실행된다면… 쿼리를 보내서 결과를 받을 수 있다.
-
쿼리는 validate되고 실행될 수 있다.
- 먼저 이미 정의된 필드와 타입으로 요청했는지를 체크하고,
- 주어진 함수들을 실행해 결과를 만들어 반환한다.
{ me { name } } { "me": { "name": "Luke Skywalker" } }
GraphQL의 장단점
1. GraphQL이 등장하게 된 이유
- RESTful API로는 다양한 기종에서 필요한 정보를 일일이 구현하는 게 힘들다
- Ex) iOS와 안드로이드에서 필요한 정보들이 다른데, 그마다 API를 파줘야 함.
- 정보를 사용하는 쪽에서 원하는 대로 정보를 가져오고 수정할 수 있도록 하자!
2. GraphQL과 RESTful API의 차이점
- GraphQL API는 주로 하나의 엔드포인트를 사용한다.
- root 엔드포인트 하나면 된다.
- RESTful API는 리소스 별로 하나의 엔드포인트를 가지고, 해당 리소스에서 엔드포인트에 대한 모든 것을 담당한다.
- 리소스 하나가 수많은 엔드포인트를 가질 수 있다.
3. GraphQL의 장점
1) HTTP 요청의 횟수를 줄일 수 있다.
- RESTful : 각 리소스 종류별로 요청을 해야하고, 요청 횟수가 필요한 리소스의 종류에 비례한다.
- GraphQL : 원하는 정보를 하나의 Query에 몽땅 담아 요청할 수 있다.
2) HTTP 응답의 크기를 줄일 수 있다.
- RESTful : 응답의 형태가 정해져있어 필요한 정보만 부분적으로 요청하는 것이 힘들다.
- GraphQL : 원하는대로 정보를 요청하는 것이 가능하다.