Graphql

홍찬기
3 min readApr 5, 2019

--

Graphql이란

Graphql은 2015년에 페이스북이 발표한 데이터 질의어다. 이것은 REST와 웹서비스 아키텍쳐를 대체할수 있다. GraphQL은 API에 대한 쿼리 언어이며 데이터에 대해 정의한 유형 시스템을 사용하여 쿼리를 실행하는 서버 측 런타임이다. Graphql은 OverFetching 과 UnderFetching을 보완한다.

OverFetching , UnderFetching

OverFetching

OverFetching이란 필요한 데이터보다 과한 데이터를 Fetching하는것을 말한다. 예를 들어 Product의 Name을 알고싶은 경우 REST를 활용할때는 Product의 Name , Price , Company 등 여러가지 데이터를 받은 다음 Name을 따로 골라 쓰고 나머지 데이터는 버리는데 이때 리소스가 낭비된다. 이렇게 필요한 데이터보다 많은 데이터를 받는것을 OverFetching이라고 말한다.

UnderFetching

UnderFetching이란 필요한 데이터보다 적은 데이터를 Fetching하는것을 말한다. 예를들어 YouTube를 들어갈때 필요한 데이터는 나의정보 , 동영상정보 , 구독정보 등등 여러가지가 필요하다. 하지만 이런 데이터들은 한번에 가져올수 없어서 여러번 가져온다. 이렇게 필요한 데이터보다 적은 데이터를 받고 여러번 데이터를 받는것을 UnderFetching이라고 한다.

Query , Mutation

Query : Query 란 데이터를 가져오는것을 말한다.

다음과 같이 query 를 실행해보자

query{
GetUser{
email
firstName
lastName
parent {
fisrtName
lastName
}
}
}

결과

{
“data”:{
"GetUser" : {
"email" : “hong@naver.com”
"firstName" : “Hong”
"lastName" : “GilDong”
"parent" : {
"firstName" : “Lee”
"lastName" : “SoonSin”
}
}
}
}

Mutation : Mutation이란 데이터를 Insert , Delete , Update등 데이터를 변화시키는것을 말한다.

다음과 같이 Mutation 을 실행해보자

mutation{
EditUser(email :"Lee@gmail.com"){
email
firstName
lastName
parent {
fisrtName
lastName
}
}
}

결과

{
“data”:{
"EditUser" : {
"email" : “Lee@gmail.com”
"firstName" : “Hong”
"lastName" : “GilDong”
"parent" : {
"firstName" : “Lee”
"lastName" : “SoonSin”
}
}
}
}

위와같이 email을 변경이 된다.

--

--

No responses yet