일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- Query
- JavaStritp
- kakao
- await
- nestjs
- js
- 실패율
- typeorm
- ROT13
- 백준
- 코딩테스트
- 프로그래머스
- javascript
- RestAPI
- 모던 자바스크립트
- REST API
- node
- html
- 카카오
- 자바스크립트
- graphql
- linux
- typescript
- mutation
- 피보나치 수
- vanila js
- Bandit
- tr명령어
- 코딩태스트
- 자바스크립트의 역사
- Today
- Total
꿀 떨어지는 코딩 양봉장
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에 대해서 더 자세히 살펴보겠습니다.
'Computer Science > GraphQL' 카테고리의 다른 글
GraphQL subscription (0) | 2022.01.31 |
---|---|
Graphql + DataLoader를 이용한 N+1문제 해결 (0) | 2021.10.24 |
GraphQL 핵심 요소 (0) | 2021.07.24 |