Skip to content

Latest commit

 

History

History
94 lines (63 loc) · 2.23 KB

01_GraphQL101.md

File metadata and controls

94 lines (63 loc) · 2.23 KB

Intro to GraphQL

GraphQL 시작하기!

https://tech.kakao.com/2019/08/01/graphql-basic/

https://www.slideshare.net/shilpe34/typescript-200-graphql-179690400



GraphQL 이란?

API를 위한 Query Language!

  • SQL (Structured Query Language) 와 마찬가지로 Query Language
    • but, 언어적 구조 차이가 크다
      • 그 결과 이 둘에 대한 활용을 다르게 하게 됨
      • 사용 목적
        • sql : DB 에 저장된 데이터를 효율적으로 가져오는 것이 목적
        • gql : Web Client 가 데이터를 서버로부터 효율적으로 가져오는 것이 목적
      • 호출
        • sql : Backend system 에서 작성하고 호출
        • gql : Client system 에서 작성하고 후출
  • 단일 요청으로 많은 데이터를 불러 올 수 있다
  • 타입 시스템
  • 강력한 개발자 도구 제공


Serverside GraphQL application

  • gql 로 작성된 쿼리를 입력으로 받아, 쿼리를 처리한 결과를 다시 client 로 돌려줌
  • GraphQL 서버


REST API 와 GraphQL API 의 차이점

  • REST API

    • URL, METHOD 등으로 조합하기 때문에 다양한 Endpoint 가 존재
      • 각 Endpoint 마다 Database SQL query가 달라짐
  • gql API

    • 단 하나의 Endpoint가 존재
    • 불러오는 데이터의 종류를 쿼리의 조합을 통해 결정
      • gql schema type 마다 Database SQL query가 달라짐

구성된 인프라, 비즈니스 모델, 사용하는 목적에 따라 각각의 장단점이 바뀐다!



schema / type


ex)

type Character {
    name: String!
    appearIn: [Episode!]!
}
  • Object type : Character
  • Field : name, appearIn
  • Scala type : String, Id, Int 등
  • ! : 필수 값 (non-nullable)
  • [ ,] : 배열 (array)



Resolver

  • gql 쿼리문 파싱은 대부분의 gql 라이브러리에서 처리함
    • but, data를 가져오는 구체적인 과정은 resolver 가 담당하고, 직접 구현해야 함!
  • 만약 field가 스칼라 값 (문자열이나 숫자 같은 primitive type) 인 경우 실행이 종료됨
    • 즉, 더 이상의 연쇄적인 resolver 호출이 일어나지 않음