GraphQL

Karter·2022년 4월 3일
1

graphQL

목록 보기
1/2

GraphQL?

GraphQL은(gql)은 Structed Query Language(sql)과 마찬가지로 쿼리 언어이다.
sql은 데이터베이스 시스템에 저장된 데이터를 효율적으로 가져오는 것이 목적이지만
gql은 웹 클라이언트가 데이터를 서버로 부터 효율적으로 가져오는 것이 목적.
gql의 문장은 주로 클라이언트 시스템에서 작성하고 호출 한다.
gql은 특정 데이터베이스나 플렛폼이나 네트워크 방식에 종속적이지 않다.

REST API와 GraphQL

REST API는 URL, METHOD등을 조합하기 때문에 다양한 Endpoint가 존재하지만 gql은 단 하나의 Endpoint가 존재.
gql API에서 불러오는 데이터의 종류를 쿼리 조합을 통해서 결정. 즉 REST API에서는 Endpoint마다 데이터베이스 SQL 쿼리가 달라지는 반면, gql API는 gql스키마의 타입마다 데이터베이스 SQL 쿼리가 달라짐.

GraphQL의 구조

쿼리/뮤테이션(query/mutation)

gql에서는 굳이 쿼리와 뮤테이션을 나누는데 내부적으로 들어가면 사실상 이 둘은 별 차이가 없다.
쿼리는 데이터를 읽는데(R) 사용, 뮤테이션은 데이터를 변조(CUD)하는데 사용한다는 개념 적인 규약을 정해놓은 것 뿐.

오퍼레이션

오퍼레이션은 GraphQL 실행 엔진으로 해석할 수 있는 단일 쿼리, 뮤테이션 또는 구독을 의미.

오퍼레이션 타입: 어떤 유형의 작업(쿼리, 뮤테이션 또는 구독)을 수행하고자 하는지 표시.

오퍼레이션 이름: 오퍼레이션에 이름을 부여. 프로그래밍 언어의 함수 이름과 유사. 이름을 정해두면 네트워크 로그나 GraphQL 서버에서 문제가 발생했을 시 내용을 해독할 필요 없이 코드 베이스에서 해당 쿼리를 쉽게 찾을 수 있다.

변수 정의: 쿼리에 필요한 변수. 이 변수는 쿼리와 별도로 전송되며 전송 포맷은 JSON.

오퍼레이션 네임 쿼리는 매우 편리하고 데이터베이스 에서의 프로시져 개념과 유사. 따라서 REST API를 호출할때와 다르게 한번의 네트워크 왕복으로 원하는 모든 데이터를 가져올 수 있다. 데이터베이스의 프로시져는 DBA 혹은 백엔드프로그래머가 작성하고 관리하였지만 gql오퍼레이션 네임 쿼리는 클라이언트 프로그래머가 작성하고 관리.

스키마/타입(schema/type)

Type

gql 스키마의 핵심 단위. 타입을 보고 애플리케이션의 핵심 기능을 알 수 있다.

리졸버(resolver)

gql의 쿼리, 뮤테이션, 구독과 같은 타입이 실제로 일을 하는 부분. 스키마를 정의하면 그 스키마 필드에 사용되는 함수의 실제 행동을 Resolver에서 정의하고 이러한 함수들이 모여 있기 때문에 Resolvers라 부름.

profile
미래 최고의 개발자

0개의 댓글