1 minute read

GraphQL 간단 정리

쿼리 언어
  • GraphQL ?

    쿼리 언어

    SQL 은 DB 에 저장된 데이터를 효율적으로 가져오는 것이 목적 (백엔드에서 주로 호출)

    GQL 은 클라이언트가 데이터를 서버로부터 효율적으로 가져오는 것이 목적 (클라이언트에서 주로 호출)

    특정 DB 나 플랫폼, 네트워크 방식에도 종속적이지 않음

  • REST API 와의 차이

    • REST API

      URL, METHOD 등을 조합하기 때문에 다양한 Endpoint 존재

      Endpoint 마다 DB SQL 쿼리 달라짐

    • GraphQL

      단 하나의 EndPoint 존재

      GQL 스키마 타입마다 SQL 쿼리 달라짐

  • GraphQL 의 구조

    • 쿼리/뮤테이션

      쿼리 : 데이터를 읽는데(R) 사용
      
      뮤테이션 : 데이터를 변조(CUD)하는데 사용
      
      - 오퍼레이션 쿼리
      
          오퍼레이션 쿼리 : 다른 인자 값을 가지는 쿼리문(쿼리용 함수)
      
          쿼리 : static 한 쿼리문
      
    • 스키마/타입

      오브젝트 타입 : 이름
      
      필드 : 스키마 필드
      
      스칼라 타입 : 데이터 타입
      
      느낌표(!) : 필수값
      
      대괄호([,]) : 배열
      
    • 리졸버

      GQL 에서 데이터를 가져오는 구체적인 과정
      
      직접 구현해야 함
      
      각각의 필드마다 존재하고 다음 타입을 반환하는 함수
      
      - 인자
      
          첫번째 인자 : parent. 연쇄적 리졸버 호출에서 부모 리졸버가 리턴한 객체. 이를 활요해 현재 리졸버가 내보낼 값 조절 가능
      
          두번째 인자 : args. 쿼리에서 입력으로 넣은 인자
      
          세번째 인자 : context. 모든 리졸버에 연결. 미들웨어를 통해 입력된 값들이 들어 있음. 로그인 정보나 권한 같은 정보 포함
      
          네번째 인자 : info. 스키파 정보와 함께 현재 쿼리의 특정 필드 정보 가지고 있음
      
    • 인트로스펙션

      서버 자체에서 현재 서버에 정의된 스키마의 실시간 정보 공유.

      별도의 쿼리 존재

      서버용 gql 라이브러리에서 제공

  • GraphQL 활용 라이브러리

    GQL 자체는 쿼리 언어라 단독으로 못 함

    Apollo GQL 좋음

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