GraphQL 간단 정리
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/