GraphQL 이란?

2019.04.06 17:54

졸리운_곰 조회 수:120

GraphQL 이란?

A query language for your API

 

본 내용은 GraphQL 공식 홈페이지의 내용을 수정한 것입니다.

 

개요

GraphQL은 facebook에서 만든 A query language for your API 로 공식 홈페이지에서 설명하고 있습니다.

 

여기서 API란 서버상에서 제공하는 API를 의미하며 이는 클라이언트와 서버의 통신언어 로도 생각할수 있습니다.

또한 GraphQL은 하나의 통신 규약이라고 볼 수 있으며 이를 여러 언어에서 구현한 코드는 여기에서 볼 수 있습니다.

 

(아래의 장점과 단점은 공식 홈페이지에 설명된 내용과 개인적인 생각을 추가하였다.)

 

GraphQL의 장점은 다음과 같습니다.

 

요청메세지가 값이 없는 JSON과 비슷하며 받는 데이터는 JSON형태이다.

요청에 따른 응답데이터 구조를 예측할수 있다.

직관적이다.

단일요청으로 원하는 데이터를 한번에 가져올수 있다.

REST API의 N+1 Problem을 해결 할 수 있다.

GraphQL은 type system을 지원한다.

개발 혹은 사용시 좀 더 명확한 오류메세지를 제공할 수 있다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

GraphiQL 등의 강력한 도구(통신 테스트 도구 등)를 사용할 수 있다.

확장이 용이하다.

GraphQL의 단점은 다음과 같습니다.

 

러닝커브 가 조금 있다.

GraphQL의 type을 정의한 코드, mutation을 정의한 코드가 추가되면서 단순한 App에서는 코드가 더 복잡해진다.

캐싱 기능의 구현이 복잡하다(하지만 대부분의 라이브러리가 지원한다.)

출시한지 얼마 안되어 안정성 문제가 생길수 있다.(하지만 facebook과 github등에서 사용한다고 한다.)

JSON이 선호되며 JSON을 사용하지 않으면 불편할수 있다. Spec

용어 정의

Query : 읽기작업을 하는 GraphQL문을 의미한다.

field : query에 있는 값(속성)

Mutation : 데이터 수정작업을 하는 GraphQL문을 의미한다.

schema : Query와 Mutation의 retrun type과 arguments type 및 custom type, custom interface, enum type 등과 input value의 default값 등을 정의한 코드를 의미한다.

resolver : schema에서 정의된 Query와 Mutation의 구조에 맞추어 retrun type과 arguments type에 맞추어 설정한 코드를 의미한다.

참고로 위 구성요소중 resolver만 GraphQL를 구현한 Server Library에 의존되고 나머지는 GraphQL에 의존됩니다.

 

즉, Query, Mutation은 schema에서 구조가 정의되고. resolver에서 행동이 정의되며 schema에서 정의된 구조에 맞춰서, 클라이언트에서 Query, Mutation문으로 request하고 서버에서 JSON으로 response 합니다.

 

[출처] https://vomvoru.github.io/blog/about-GraphQL/

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
818 basic lite coin (cryptocurrency) 구현 implementation Naivecoin file 졸리운_곰 2019.05.09 109
817 실시간 서비스 경험기(배달운영시스템) file 졸리운_곰 2019.05.06 149
816 구름(Cloud)을 가장자리(Edge)로 내몰다, 엣지 컴퓨팅 file 졸리운_곰 2019.05.04 119
815 엣지 컴퓨팅, 클라우드 컴퓨팅 시대의 새 장(場) 열다 file 졸리운_곰 2019.05.04 170
814 엣지 컴퓨팅(Edge Computing) 이란? file 졸리운_곰 2019.05.04 151
813 openblockchains/awesome-blockchains file 졸리운_곰 2019.05.04 389
812 프로젝트가 장난이야?! file 졸리운_곰 2019.05.01 149
811 스마트시대_개발자로살아남기.pdf file 졸리운_곰 2019.05.01 158
810 [심심할 때 읽는 프로젝트 이야기 PDF] 소책자 file 졸리운_곰 2019.05.01 122
809 프로젝트이야기 2: 빅데이터를 이용한 경로탐색정보 분석 file 졸리운_곰 2019.05.01 140
808 프로젝트 명 : 부가서비스 관리 시스템 개선 졸리운_곰 2019.05.01 124
807 물류관리사 하는일 & 연봉 알아보기 file 졸리운_곰 2019.04.08 997
806 [ERR] Timed out after 1m0s: health check never passed.#1119 졸리운_곰 2019.04.07 116
805 단숨에 Go언어(Golang) 배우기 file 졸리운_곰 2019.04.06 179
» GraphQL 이란? file 졸리운_곰 2019.04.06 120
803 GraphQL과 RESTful API file 졸리운_곰 2019.04.06 128
802 What is a Headless CMS? file 졸리운_곰 2019.04.06 106
801 빅데이터 예측 분석 위한 6가지 핵심 기술 졸리운_곰 2019.04.03 125
800 "빅데이터의 핵심은 시각화와 예측 분석이다" 팁코 file 졸리운_곰 2019.04.03 119
799 안드로이드 마메 실행법 file 졸리운_곰 2019.03.30 642
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED