graphql이란 server api로 부터 정보를 주고받는 것에 특화된 QL(query language)다.
ios, android 등 다양한 기기에서 필요한 정보의 형태가 조금씩 달라 질 수 있으며 기존의 REST API로는 이것들을 일일이 구현하는 것이 힘들어 지며
정보를 요청하는 측에서 원하는 형태로 정보를 가져오고 수정할 수 있는 것이 필요해졌다.
설치 명령어
yarn add @apollo/client graphql
https://www.youtube.com/watch?v=YyUWW04HwKY&t=87s
import { gql } from "@apollo/client";
// 여기서 가져올 데이터 컬럼을 선택할 있다
export const LOAD_USERS = gql`
query {
getAllUsers {
id
firstName
email
// password 비밀번호는 가지고 오고 싶지 않으면 주석처리 해도 에러가 없다!
}
}
`;
불필요한 데이터를 가지고 오지 않아도 된다는 장점이 있다.
백엔드 측 에서도 굳이 여러 api를 만들지 않아도 될 듯 하다.
REST API는 URL, METHOD등을 조합하기 때문에 다양한 Endpoint가 존재 합니다. 반면, gql은 단 하나의 Endpoint가 존재 합니다. 또한, gql API에서는 불러오는 데이터의 종류를 쿼리 조합을 통해서 결정 합니다. 예를 들면, REST API에서는 각 Endpoint마다 데이터베이스 SQL 쿼리가 달라지는 반면, gql API는 gql 스키마의 타입마다 데이터베이스 SQL 쿼리가 달라집니다.
GraphQL에 대해서 아주 얕게 알아봤다.
지금은 당장 사용할 기술은 아니지만 후에 꼭 프로젝트에 도입 해보고 싶다 생각이 들 정도로 매력적인 쿼리인 것 같다:)
GraphQL에 대한 의견참고
https://owin2828.github.io/devlog/2020/11/12/GraphQL-1.html