GraphQL

zenoan·2021년 12월 28일
0

GraphQL

목록 보기
1/1

Facebook이 만든 쿼리 언어다

  • API를 위한 쿼리 언어다
  • 이미 존재하는 데이터로 쿼리를 수행하기 위한 런타임이다
  • 정확하게 필요하는 데이터를 받는다 (예측 가능한 결과를 반환한다)
  • 많은 데이터 및 리소스를 단 한번의 요청으로 받을 수 있다
  • 명확한 타입 시스템이 있어서 가능한 것을 보고 에러를 명확하게 알아 볼 수 있다
  • 단일 엔드포인트에서 데이터의 모든 기능에 접근 가능하다
  • 엔드포인트가 아닌 타입과 필드로 구성되어 있다
  • 버전 관리 없이 API를 업그레이드 할 수 있다

GraphQL vs REST API

GraphQL

  • 클라이언트가 필요한 리소스를 요청한다.
  • 단일 엔드포인트 : GraphQL 스키마에 따라 데이터가 다르다.
  • 하나의 쿼리가 여러 리졸버를 호출하여 여러 리소스가 포함된 중첩 응답 구성.

REST

  • 리소스 모양과 크기는 서버에 의해 결정된다.
  • 다중 엔드토인트 : URL과 Method에 따라 접근할 수 있는 데이터가 다르다.
  • 각 요청은 정확히 하나의 경로 처리 함수를 호출

장점

  • GraphQL은 구체적인 데이터 요구 사항이 포함된 단일 쿼리로 요청가능 하다
    사용자 / 게시물 / 팔로워 데이터를 받아오려면 :
query {
	User(id: "123") {
    	name
        posts { title }
        followers { name}
     	}
      }
  • Overfetching과 Underfetching이 없다
  • 프론트엔드에서 신속한 iteration을 돌릴 수 있다
  • 백엔드에서 프론트엔드 사이드에서 어떤 데이터를 사용할 수 있는지 알 수 있다
  • 스키마 및 타입 시스템으로 인해 프론트/백엔드가 사용하는 데이터 구조를 맟출 수 있다

GraphQL을 왜 만들었는가?

  • 같은 DB로 다양한 UI를 구상할 필요가 있어서
    Facebook의 같은 홈 화면이어도 모바일 웹 / 모바일 앱(iOS, Android) / PC 웹 경우 각각 다른 UI로 화면을 구성할 필요가 있어서
  • 보여주는 데이터가 제각각인 문제를 해소하기 위해서
profile
프론트엔드 개발자

0개의 댓글