GraphQL

j1_0·2023년 8월 1일
0

백엔드와의 협업 경험을 위해 처음했던 소록소록 프로젝트를 진행중이었다.
Vanila JavaScript로 작성된 코드를 리액트로 리펙토링을 하기로 했고, 프론트 3명과 백엔드 1명과 함께 기획을 하며 한달안에 끝내자! 라고 했다. 백엔드과 완성되기 전까지 할 수 있는것들을 하며 공부를 하고 있었고 한달동안 아무것도 결과를 내지 않던 백엔드 한명은 아무런 API도 주지 않은채 취업했다며 튀었다 ^^
결국 새로운 백엔드 한명을 구해왔고 프로젝트는 현재 진행중인데, GRAPHQL이 그럴때를 대비해 적용하면 좋다는 계속 연락하며 지내는 튜터님의 말씀... 진작 알았다면 좋을것 같기에 도입해보기로 하며 GraphQL을 공부해보려한다.

GraphQL
GraphQL(GQL)이란 페이스북에서 만든 API (Application Programming Interface) 를 위한 쿼리 언어이다. SQL(Stucted Query Languag)와 마찬가지로 쿼리 언어이지만 조금 다르다.

GrpahQL(GQL)
웹 클라이언트가 데이터를 서버로부터 효율적으로 가져오는 것이 목적인 쿼리 언어

Structured Query Language(SQL)
데이터 베이스 시스템에 저장된 데이터를 효율적으로 가져오는 것이 목적인 쿼리언어

두 쿼리 언어의 다른점을 조금 더 살펴보자면
GraphQL의 문장은 주로 클라이언트 시스템에서 작성하고 호출하지만 SQL은 주로 백엔드 시스템에서 작성하고 호출한다는 점이 있다.

//SQL 예시
SELECT first_name, last_name
FROM users
WHERE age>18
ORDER BY last_name ASC;
//GraphQL 예시
query{
user(id:"1"){
firstName
lasName
friend{
firstName
lasName
}
}
}
GraphQL의 특징
GraphQL의 특징을 알아보자

타입 시스템을 사용하여 쿼리를 실행하는 서버사이드 런타임이다.
특정 데이터베이스나 플랫폼에 종속적이지 않다.
HTTP를 통해 API 서버로 요청을 보내고 응답을 받는다.
데이터 결과를 JSON 형식으로 응답받는다.
GraphQL 라이브러리가 조회 대상 schema (데이터 베이스에서자료의 구조, 표현방법, 관계를 형식 언어로 정의한 구조)가 유효한지 검사한다.
서버 개발자가 작성한 각 필드에 대응하는 reslover (요청에 대한 응답을 결정해주는 함수로 Query, Mutation, Subscription 과 같은 타입의 로직) 함수로 필드의 데이터 조회가 가능하다.
REST API와는 다르게 /graphql 하나의 엔드포인트에서 쿼리를 이용해 여러개의 API에 요청, 응답 받을 수 있다.


일단 회의 결과 백오피스 만들때 적용해보자고 했고 세세한 부분은 차근차근 공부해야겠다.

0개의 댓글