GraphQL

hzn·2022년 12월 1일
0

HTTP / 네트워크

목록 보기
8/9
post-thumbnail

GraphQL

  • Graph + Query Language
  • Facebook에서 개발한 오픈 소스로 제공되는 API를 위한 쿼리 언어

그래프를 사용하는 이유

  • 그래프라는 자료구조가 인간의 뇌 구조 및 언어적인 설명과 가장 비슷 (마인드맵 구조와 유사)
  • 실제 현실 세계의 많은 현상들을 모델링하기 가장 강력한 도구

  • GraphQL에서는 모든 데이터가 그래프 형태로 연결되어 있다고 전제
  • 모든 그래프는 한 노드를 루트로 정해서 트리 형태로 정렬할 수 있다는 점에 착안

  • 그래프를 누구의 입장에서 정렬하느냐 = 클라이언트가 어떤 데이터를 필요로 하느냐 = 어떤 노드가 루트가 되느냐

GraphQL의 특징

  • REST API 방식의 고정된 자원이 아닌 클라이언트 요청에 따라 유연하게 자원을 가져올 수 있다.
  • HTTP를 통해 API 서버로 요청을 보내고 응답을 받는다.
  • 응답 데이터는 (트리 구조인) JSON 형식으로 받는다.
  • 서버 개발자가 작성한 각 필드에 대응하는 resolver 함수로 각 필드의 데이터를 조회할 수 있다.
  • GraphQL 라이브러리가 조회 대상 schema가 유효한지 검사한다.

GraphQL의 장단점 (REST API와 비교)

장점

1. 하나의 endpoint 요청

  • /graphql이라는 하나의 endpoint로 요청을 받는다.
  • 서버는 요청에 따라 query , mutation을 resolver 함수로 전달해서 요청에 응답한다.
  • 모든 클라이언트 요청은 POST 메소드를 사용한다.

2. No! under & overfetching

  • 여러 개의 endpoint 요청을 할 필요없이 하나의 endpoint에서 쿼리를 이용해 원하는 데이터를 정확하게 API에 요청하고 응답으로 받을 수 있다.

3. 강력한 playground

  • graphql 서버를 실행하면 playground라는 GUI를 이용해 resolver 와 schema 를 한 눈에 보고 테스트 해 볼 수 있다. (POSTMAN 과 비슷)

4. 클라이언트 구조 변경에도 지장이 없음

  • 클라이언트 구조가 바뀌어도 필요한 데이터를 결정하고 받는 주체가 클라이언트이기 때문에 서버에 지장이 없다.
  • 클라이언트에서는 무슨 데이터가 필요한 지에 대해서만 요구사항을 쿼리로 작성하면 된다.

Learn GraphQL In 40 Minutes

0개의 댓글