GraphQL이란?
과거 RestAPI에 대해서 설명했던 적이 있었습니다.
https://nayoon030303.tistory.com/25
이번 시간에는 GraphQl에 대해서 공부해보도록 해보겠습니다!
GraphQL이란 페이스북에서 만든 2012년에 개발되어서 2015년에 오픈소스로 공개된 데이터 쿼리 언어입니다. 기존 데이터로 된 쿼리를 수행하기 위한 서버 측 런타임입니다.
GraphQL API는 엔드포인트가 아닌 유형과 필드로 구성됩니다. 단일 엔드포인트에서 데이터의 모든 기능을 접근할 수 있습니다. GraphQL은 유형을 사용하여 앱이 가능한 것만 요청하고 명확하고 유용한 오류를 제공하도록 합니다.
자세한 설명은 GraphQL 공식 설명에 들어가보세요
📕GraphQL
GraphQL은 Rest API의 한계를 극복하고자 나왔다고 할 수 있습니다. Rest API의 한계로는 Over-Fetching과 Under-Fetching이 있습니다. GraphQL은 Endpoint를 1개만 생성해 단 한 번의 요청으로 많은 리소스를 받을 수 있습니다. GraphQL을 사용하면 느린 모바일 네트워크 연결에서도 빠르게 사용할 수 있습니다.
📗Over-Fetching 문제를 GraphQL을 사용하면 쉽게 해결됩니다.
요청 쿼리
query{
hero{
name
height
.
.
.
}
}
반환 결과
{
"hero":{
"name":"Kim MiRim",
"height":"163",
.
.
.
}
}
불필요한 데이터들 없이 원하는 데이터들만 받아올 수 있습니다.
📘Under-Fetching 문제를 GraphQL을 사용하면 쉽게 해결됩니다.
요청 쿼리
query{
hero{
name
height
}
friend{
name
climate
}
}
반환 결과
{
"hero":{
"name":"Kim Mirim",
"height":"163"
},
"friend":{
"name":"ABC"
"climate":"DEV"
}
}
한 번에 요청에 원하는 데이터들을 받아올 수 있습니다.
📙GraphQL에 단점
GraphQl에 장점만 있는 것은 아닙니다. 모든 언어가 그렇듯이 GraphQL에도 단점이 존재합니다.
- 백앤드, 클라이언트 개발자 모두 러닝 커브가 높습니다.
- 하나의 URL로 모두 처라 하기에, HTTP에서 제공하는 캐싱을 그대로 사용하는 것이 불가능합니다..
- 요청을 text로 날리기 때문에 파일 업로드가 어렵습니다.
💡마무리
이번 시간에 데이터를 주고받는 방식인 GraphQL에 대해서 알아봤습니다. Rest API에 단점을 보완할 수 있지만 또 다른 단점들이 나타났네요. Rest API, GrapQL 둘 중 어느 것이 더 좋다!라고 단정할 수는 없습니다. 하지만 각 상황에 따라서 어는 것이 더 좋을지는 달라지기 때문입니다. 다음 시간에는 GraphQL에 대해서 더 자세히 살펴보겠습니다.