본문 바로가기
부트캠프교육중/HTTP, 네트워크

GraphQL

by 뭉지야 2023. 3. 28.
728x90

<GraphQL>

-Facebook에서 처음으로 개발했고, 오픈 소스로 제공된 쿼리 언어

-Graph + Query Language의 줄임말로 Query Language 중에서도 Server API 를 통해 정보를 주고받기 위해 사용하는 Query Language를 뜻합니다.

-API를 위한 쿼리 언어

-트리 구조로 쿼리 결과를 받기 위해 그래프를 탐색하는 쿼리 언어라고 볼 수 있습니다.

-REST API의 한계때문에 정보를 사용하는 측에서 원하는 대로 정보를 가져올 수 있고, 보다 편하게 정보를 수정할 수 있도록 하는 표준화된 Query language 를 만들게 되었고 이것이 GraphQL입니다.

 

#왜쓰나

-GraphQL의 아이디어는 그래프로 생각하기에서부터 출발합니다

-GraphQL에서는 모든 데이터가 그래프 형태로 연결되어 있다고 전제합니다.

-GraphQL은 클라이언트 요청에 따라 유연하게 트리 구조의 JSON 데이터를 응답으로 전송할 수 있습니다.

-GraphQL은 REST API 방식의 고정된 자원이 아닌 클라이언트 요청에 따라 유연하게 자원을 가져올 수 있다는 점에서 엄청난 이점을 갖습니다.

 

< GraphQL의 특징 >

-HTTP를 통해 API 서버로 요청을 보내고 응답을 받습니다.
-응답을 받을 시, 데이터 결과를 JSON 형식으로 받습니다.
-서버 개발자가 작성한 각 필드에 대응하는 resolver 함수로 각 필드의 데이터를 조회할 수 있습니다.
-GraphQL 라이브러리가 조회 대상 schema가 유효한지 검사합니다.

 

< GraphQL의 단점>

# GraphQL이 기존 REST API 방식이 가지고 있는 모든 문제를 해결할 만능키로 보이지만 GraphQL에도 다음과 같은 단점이 존재합니다.

# REST API에 친숙한 개발자의 경우 GraphQL를 학습하는 데 시간이 필요합니다.
# 캐싱이 REST보다 훨씬 복잡합니다.
- HTTP에선 각 메소드에 따라 캐싱이 구현되어 있습니다. 하지만 GraphQL에선 POST 메소드만을 이용해 요청을 보내기 때문에 각 메소드에 따른 캐싱을 지원받을 수 없습니다. 그래서 이를 보완하기 위해 Apollo 엔진의 캐싱과 영속 쿼리 등이 등장하게 되었습니다.
# 고정된 요청과 응답만 필요할 경우에는 Query 로 인해 요청의 크기가 RESTful API 의 경우보다 더 커집니다.

 


출처

코드스테이츠

 

728x90

'부트캠프교육중 > HTTP, 네트워크' 카테고리의 다른 글

GraphQL 구조  (0) 2023.03.28
GraphQL VS Rest API  (0) 2023.03.28
HTTPS  (0) 2023.03.12
OAuth  (0) 2023.03.09
쿠키/세션/토큰  (0) 2023.03.09