GraphQL 시작하기!
https://tech.kakao.com/2019/08/01/graphql-basic/
https://www.slideshare.net/shilpe34/typescript-200-graphql-179690400
API를 위한 Query Language!
- SQL (Structured Query Language) 와 마찬가지로 Query Language
- but, 언어적 구조 차이가 크다
- 그 결과 이 둘에 대한 활용을 다르게 하게 됨
- 사용 목적
sql
: DB 에 저장된 데이터를 효율적으로 가져오는 것이 목적gql
: Web Client 가 데이터를 서버로부터 효율적으로 가져오는 것이 목적
- 호출
sql
: Backend system 에서 작성하고 호출gql
: Client system 에서 작성하고 후출
- but, 언어적 구조 차이가 크다
- 단일 요청으로 많은 데이터를 불러 올 수 있다
- 타입 시스템
- 강력한 개발자 도구 제공
gql
로 작성된 쿼리를 입력으로 받아, 쿼리를 처리한 결과를 다시 client 로 돌려줌- GraphQL 서버
-
URL
,METHOD
등으로 조합하기 때문에 다양한 Endpoint 가 존재- 각 Endpoint 마다 Database SQL query가 달라짐
-
- 단 하나의 Endpoint가 존재
- 불러오는 데이터의 종류를 쿼리의 조합을 통해 결정
- gql schema type 마다 Database SQL query가 달라짐
구성된 인프라, 비즈니스 모델, 사용하는 목적에 따라 각각의 장단점이 바뀐다!
ex)
type Character {
name: String!
appearIn: [Episode!]!
}
Object type
: CharacterField
: name, appearInScala type
: String, Id, Int 등!
: 필수 값 (non-nullable)[ ,]
: 배열 (array)
- gql 쿼리문 파싱은 대부분의 gql 라이브러리에서 처리함
- but, data를 가져오는 구체적인 과정은
resolver
가 담당하고, 직접 구현해야 함!
- but, data를 가져오는 구체적인 과정은
- 만약 field가
스칼라 값
(문자열이나 숫자 같은 primitive type) 인 경우 실행이 종료됨- 즉, 더 이상의 연쇄적인 resolver 호출이 일어나지 않음