GraphQL 을 쓰는 일이 생길 것 같아서 가볍게 무엇인지 알아보았다.
GraphQL은 페이스북에서 만든 쿼리 언어이다. SQL과 마찬가지로 쿼리 언어라고 볼 수 있다.
SQL과는 언어적 구조 차이, 실전에서 쓰이는 방식이 매우 크다.
SQL은 데이터베이스 시스템에 저장된 데이터를 효율적으로 가져오는 것이 목적이고 주로 백엔드 시스템에서 작성하고 호출한다.
GraphQL은 웹 클라이언트가 데이터를 서버로부터 효율적으로 가져오는 것이 목적이고 주로 클라이언트 시스템에서 작성하고 호출한다.
GraphQL 예시
{
hero {
name
friends {
name
}
}
}
RestAPI는 URl, Method 등을 조합하기 때문에 다양한 Endpoint가 존재 하지만 GraphQL은 하나의 Endpoint만 존재한다. 또한 GraphQL API에서는 불러오는 데이터의 종류를 쿼리 조합을 통해 결정 예를 들어, Rest API에서는 각 Endpoint 마다 데이터 베이스 SQL 쿼리가 달라지는 반면, GraphQL API는 GraphQL 스키마의 타입마다 데이터 베이스 SQL 쿼리가 달라진다.

쿼리/뮤테이션

GraphQL 쿼리문 우측은 응답데이터 형식이다.
GraphQL은 쿼리와 뮤테이션으로 나누는데 쿼리는 데이터 읽는 데 사용하고 뮤테이션은 데이터를 변조하는데 사용한다.
GraphQL은 프론트엔드와의 협업 방식에 영향을 준다.
기존에는 백엔드에서 전달해주는 API 요청, 응답 형식에 의존했지만 GraphQL을 사용한 방식은 의존도가 많이 사라지게 된다.
데이터 베이스 사용시, 데이터를 가져오기 위해 SQL을 작성했고 데이터베이스 어플리케이션을 사용해 데이터를 가져오는 구체적인 과정이 구현 되어있었다. 하지만 GraphQL에서는 데이터 가져오는 구체적인 과정을 직접 구현해야한다.
GraphQL 쿼리문 파싱은 대부분 라이브러리에서 처리하지만 GraphQL에서 데이터를 가져오는 구체적인 과정은 resolver가 담당하고 이를 직접 구현해야한다.
GraphQL 쿼리에서는 각각의 필드마다 함수가 하나씩 존재한다고 생각하면 된다. 각각의 함수를 리졸버 라고 한다.
GraphQL이 그냥 무엇인지에 대한 개념을 알게 된 것 같다. 직접 사용하고 만드려면 조금 더 깊이 공부해야할 것 같다. 어려운 친구다 !!!!!
[참고 자료]
https://tech.kakao.com/posts/364
https://ian-info.tistory.com/18