[GraphQL] 소개

신명철·2023년 2월 10일
1

GraphQL

목록 보기
1/3

GraphQL?

GraphQL은 서버에서 데이터를 가져오기 쉽게 만든 쿼리 언어이다. GraphQL는 서버사이드에서 GraphQL로 작성된 쿼리를 받아서 결과를 처리해서 클라이언트에게 응답하는 역할을 한다. 하나의

GraphQLQueryMutation으로 나눠 요청을 개념적으로 분리하는데, Query는 데이터를 읽는 행위를 말하고, Mutation은 데이터를 변경하는 행위를 말한다.

API를 위한 쿼리 언어로, 타입과 필드를 정의해서 각 타입의 필드에 대한 함수로 구현된다. 예를 들어서 로그인한 사용자가 누구(me)인지/ 해당 사용자의 이름(name)을 가져오는 GraphQL은 다음과 같다.

type Query {
	me: User
}
type User {
	id: ID
	name: String
}

이에 대한 응답은 다음과 같다

{
  "me": {
    "name": "홍길동"
  }
}

GraphQL의 형태

{
  hero {
  	name
  }
}

위 쿼리를 실행하면 다음과 같은 결과를 얻을 수 있다

{
  "data": {
    "hero":{
      "name": "iron man"
    }
  }
}

쿼리와 결과가 정확히 동일한 형태이고, 위 예제에서는 String 타입만 요청했지만, 필드는 다음 예제처럼 객체를 참조할 수도 있다.

{
  hero {
  	name
    friends {
    	name
    }
  }
}
{
  "data": {
    "hero": {
      "name": "iron man"
      "friends":[
      	{"name": "spider man"},
    	{"name": "hulk"},
  		{"name": "captain america"}
      ]
    }
  }
}

GraphQL 쿼리는 연관된 객체와 필드를 탐색할 수 있어서 여러번의 REST 요청으로 받아오는 데이터를 한번의 요청으로 가져올 수 있다.

GraphQL 스키마

GraphQL의 스키마는 DB의 스키마와 같은 개념을 갖는다. 특정 요청이나 반환할 데이터 타입에 대한 정의를 할 수 있다.

REST API 와의 차이점

REST APIURLHTTP METHOD 를 사용해서 엔드포인트를 다양하게 가져가며 사용을 한다. 하지만, GraphQL 은 하나의 엔드포인트를 사용한다.

하나의 엔드포인트를 사용하며 데이터를 HTTP BODY에 실어 보내기 때문에 모든 요청은 POST로만 보내고 요청의 특징에 따라서 QueryMutation으로 구분된다.


참고

profile
내 머릿속 지우개

0개의 댓글