Jake_Young.log
로그인
Jake_Young.log
로그인
'웹 앱 API 개발을 위한 GraphQL' 1장, GraphQL에 오신 것을 환영합니다.
Jake_Young
·
2020년 9월 10일
팔로우
0
Book: Learning GraphQL
graphql
0
웹 앱 API 개발을 위한 GraphQL, Learning GraphQL
목록 보기
1/2
😂 선언형 데이터 페치 방법과 GraphQL 서비스 핵심 가이드
GraphQL은 REST API와 비교해 데이터를 가져오는 기능이 훨씬 우수하여 최근 주목받고 있다.
깃허브, 뉴욕타임스, IBM, 트위터, 옐프 등 다양한 환경과 언어 그리고 모든 규모의 팀에서 쓰이고 있다.
저자들은 그래프의 이론, 그래프의 데이터 자료 구조부터 스키마, GraphQL 서비스, Apollo 클라이언트까지 웹 서비스 아키텍처를 자체적으로 구성할 수 있는 GraphQL의 장점과 트렌드, 모범 기법 들을 알려준다.
😎 GraphQL이란
API를 만들 때 사용할 수 있는 쿼리 언어이다.
쿼리에 대한 데이터를 받을 수 있는 런타임이기도 하다.
쿼리문을 중첩하여 실행하면 연관된 객체를 응답 데이터로 같이 받을 수 있다.
복수의 객체 데이터를 받기 위해 요청을 여러번 반복할 필요가 없다.
원치 않는 데이터가 있다면 이를 제외할 수도 있다.
GraphQL 서버에서는 쿼리가 실행될 때마다 타입 시스템에 기초해 쿼리가 유효한지 검사한다.
GraphQL은 선언형(declarative) 데이터 페칭(fetching) 언어
GraphQL은 클라이언트와 서버 간의 통신 명세이다. (Like ECMAScript)
🙄 GraphQL 설계 원칙
위계적
필드 안에 다른 필드가 중첩될 수 있으며, 쿼리와 그에 대한 반환 데이터는 형태가 서로 같다.
제품 중심적
GraphQL은 클라이언트가 요구하는 데이터와 클라이언트가 지원하는 언어 및 런타임에 맞춰 동작한다.
엄격한 타입 제한
스키마의 데이터 포인트마다 특정 타입이 명시되며, 이를 기초로 유효성 검사를 받게 된다.
클라이언트 맞춤 쿼리
GraphQL 서버는 클라이언트 쪽에서 받아서 사용할 수 있는 데이터를 제공한다.
인트로스펙티브
GraphQL 언어를 사용해 GraphQL 서버가 사용하는 타입 시스템에 대한 쿼리를 작성할 수 있다.
🤩 데이터 전송의 역사
RPC (Remote Procedure Call)
SOAP (Simple Object Access Protocol)
REST (Representational state transfer)
GraphQL
REST의 단점
오버페칭(Overfetching)
A 라는 인물의 정보가 필요할 때 REST는 이름 나이 주소 성별 취미 가문 신장 등 너무 많은 불필요한 정보를 제공한다.
언더페칭(Underfetching)
A 라는 인물이 속한 가문의 정보가 필요할 때 REST는 A라는 인물에 대한 정보와 그 가문의 정보를 요청하는 두 가지 요청을 보내야만 한다. 한번에 원하는 정보를 모두 제공 받을 수 없다.
엔드포인트 관리
클라이언트에 변경 사항이 생기면 대개 엔드포인트를 새로 하나 만들어야 한다. 이렇게 되면 엔드포인트 개수가 몇 배로 빠르게 늘어난다.
Jake_Young
자바스크립트와 파이썬 그리고 컴퓨터와 네트워크
팔로우
다음 포스트
'웹 앱 API 개발을 위한 GraphQL' 2장, 그래프 이론
0개의 댓글
댓글 작성