개발정리

GraphQL 개념 본문

GraphQL

GraphQL 개념

coffee. 2024. 7. 16. 18:47

GraphQL은 페이스북에서 만든 언어입니다

SQL과 마찬가지로 쿼리 언어입니다.

SQL은 데이터베이스 시스템에 저장된 데이터를 효율적으로 가져오는 것이 목적입니다.

gql은 웹 클라이언트가 데이터를 서버로부터 효율적으로 가져오는 것이 목적입니다.

sql의 문장은 주로 백엔드 시스템에서 작성하는 반면, gql의 문장은 주로 클라이언트 시스템에서 작성합니다.

 

서버사이드 gql애플리케이션은 gql로 작성된 쿼리를 입력으로 받아 쿼리를 처리한 결과를 다시 클라이언트로 돌려줍니다.

HTTP API자체가 특정 데이터베이스나 플렛폼에 종속적이지 않은것 처럼

마찬가지로 gql역시 어떠한 특정 데이터베이스나 플렛폼에 종속적이지 않습니다.

 

REST API와 비교

REST API는 URL,METHOD등을 조합하기 때문에 다양한 ENDPOINT가 존재합니다.

반면, gql은 단 하나의 endpoint가 존재합니다.

또한, gql API에서는 불러오는 데이터의 종류를 쿼리 조합을 통해서 결정합니다.

예를들면, REST API 에서는 각 Endpoint마다 데이터베이스 SQL쿼리가 달라지는 반면,gql api는 gql스키마의 타입마다 데이터베이스 sql쿼리가 달라집니다.

 

GraphQL의 타입 구조

GraphQL은 강한 타입을 가진 언어입니다.

타입 시스템은 GraphQL 애플리케이션에서 사용할 수 있는 다양한 데이터 타입을 정의합니다.

타입 시스템은 클라이언트와 서버사이의 계약을 정의하는것을 도와줍니다.

 

Scalar 하나의 value를 저장
Object 가져올수 있는 오브젝트의 종류를 보여줍니다.
Query 다른 특정 타입에 대한 진입점
Mutation 데이터 조작을 위한 진입점
Enum 미리 정의된 옵션에서 한가지를 선택해야 하는 상황에 유용함

 

 

Scalar Type

한가지 값을 저장할 수 있는 원시 데이터 타입

int,float,string,boolean,ID

 

Object Type

필드의 그룹을 표현하고 스키마에서 사용되는 가장 일반적인 타입

오브젝트안의 각 타입은 다른 타입을 매핑합니다.

그렇게 함으로써 중첩된 타입을 허용합니다.

다르게 말해서 오브젝트 타입은 여러개의 스칼라타입과 오브젝트 타입으로 구성됩니다.

 

 

type Student{
	stud_id:ID
    firstname:String
    age:Int
    score:Float
}


type Query{
	stud_details:[Student]
}

 

 

Query Type

query문은 데이터를 가져올때 사용됩니다.

REST API에서 자원을 요청하는 것과 같습니다.

간단히 말해서,쿼리 타입은 클라이언트에서 GraphQL서버로 보내진 요청입니다.

GraphQL은 Schema Definition Language(SDL)을 사용합니다.

 

Mutation Type

Mutation은 서버로 보내진 create,update,delete 데이터 입니다.

 

Enum Type

Enum Type은 스칼라 타입과 비슷합니다.

Enum은 미리 규약된 옵션으로 부터 값을 사용할 때 유용합니다.

 

 

참고

https://tech.kakao.com/posts/364

 

GraphQL 개념잡기 - tech.kakao.com

GraphQL은 페이스북에서 만든 쿼리 언어입니다. GrpahQL은 요즘 개발자들...

tech.kakao.com

https://www.tutorialspoint.com/graphql/graphql_type_system.htm

 

GraphQL - Type System

GraphQL - Type System - GraphQL is a strongly typed language. Type System defines various data types that can be used in a GraphQL application. The type system helps to define the schema, which is a contract between client and server. The commonly used Gra

www.tutorialspoint.com