localhost:3000/api/team
[
{
name: '30분짜장',
category: 'chinese',
tel: '##-####-####',
rating: 4.6
},
{
name: '피자파자마',
category: 'italian',
tel: '##-####-####',
rating: 3.9
},
{
name: '공중떡볶이',
category: 'snack',
tel: '##-####-####',
rating: 4.9
},
///...
]
RestAPI 의 한계
localhost:3000/api/team
[
{
name: '30분짜장',
category: 'chinese',
},
{
name: '피자파자마',
category: 'italian',
},
{
name: '공중떡볶이',
category: 'snack',
},
///...
]
'food' [{
name: '30분짜장',
category: 'chinese',
tel: '##-####-####',
rating: 4.9
},
{
name: '피자파자마',
category: 'italian',
tel: '##-####-####',
rating: 4.9
},
{
name: '공중떡볶이',
category: 'snack',
tel: '##-####-####',
rating: 4.9
}],
'agency': {
kt,
skt,
lg
}
'food' [{
name: '30분짜장',
category: 'chinese',
tel: '##-####-####',
rating: 4.9
},
{
name: '피자파자마',
category: 'italian',
tel: '##-####-####',
rating: 4.9
},
{
name: '공중떡볶이',
category: 'snack',
tel: '##-####-####',
rating: 4.9
}],
'agency': {
kt,
skt,
lg
}
REST API와 비교
REST API는 URL, METHOD등을 조합하기 때문에 다양한 Endpoint가 존재 합니다. 반면, gql은 단 하나의 Endpoint가 존재 합니다. 또한, gql API에서는 불러오는 데이터의 종류를 쿼리 조합을 통해서 결정 합니다.
GraphQL이란?
GraphQL은 페이스북에서 만든 쿼리 언어이면서 Structed Query Language(이하 sql)와 마찬가지로 쿼리 언어입니다
sql은 데이터베이스 시스템에 저장된 데이터를 효율적으로 가져오는 것이 목적이고, gql은 웹 클라이언트가 데이터를 서버로 부터 효율적으로 가져오는 것이 목적입니다.
sql의 문장(statement)은 주로 백앤드 시스템에서 작성하고 호출 하는 반면, gql의 문장은 주로 클라이언트 시스템에서 작성하고 호출 합니다.
// sql
SELECT plot_id, species_id, weight, ROUND(weight / 1000.0, 2) FROM surveys;
// gql
{
hero {
name
friends {
name
}
}
}
서버사이드 gql 어플리케이션
GraphQL의 구조