[Network] GraphQL

ignisilva·2022년 1월 19일
0

Network

목록 보기
1/2
post-thumbnail

최근 REST API와 함께 많이 사용되고 있는 통신 방법인 GraphQL에 대해 정리해보자.


출처: https://2020.stateofjs.com/en-US/technologies/datalayer/

GraphQL?

GraphQL(이하 GQL)은 2012년 Facebook에서 개발되고 2015년에 오픈소스로 공개된 쿼리 언어이다.

SQL이 서버가 DB에서 데이터를 가져오는 것을 목적으로 만들어진 쿼리 언어라면,

GQL은 웹 클라이언트가 서버에서 데이터를 가져오는 것을 목적으로 만들어진 쿼리 언어이다.

GQL은 일반적으로 네트워크 레이어의 L7 HTTP POST 메서드와 Websocket 프로토콜을 활용하나,

필요에 따라 L4의 TCP/UDP 또는 L2형식의 이더넷 프레임을 활용 할 수도 있다.

GraphQL 구조

쿼리(query)

REST API의 GET 요청

query 예시

// 요청
query {
  person {
    name
  }
}

// 응답
{
  "data": {
    "person": {
      "name": "ignis"
    }
}

뮤테이션(mutation)

REST API의 GET 이외 나머지 HTTP Method 요청(POST, PUT(PATCH), DELETE) 담당

mutation 예제

// 요청
mutation {
  createPerson(input: {
  	name: "test"
  }) {
	...요청 결과
  }
}

// 응답

REST API와 비교

REST API는 URL + HTTP Method + Resource(사용자 id 등)를 조합하므로 다양한 Endpoint가 존재하지만,

GQL은 /grapgql 이라는 단 하나의 Endpoint만 존재한다.

출처: https://2020.stateofjs.com/en-US/technologies/datalayer/

또한, GQL은 REST API와 달리 원하는 자료만 호출 가능하므로,

클라이언트 백엔드간의 네트워크 비용이 줄어든다는 장점이 있다.

GraphQL 사용

Node.js 서버의 경우, apollo-server-express를 활용

React 클라이언트의 경우, apollo-client를 활용

작성시 도움 받은 사이트들 출처

profile
웹 개발자

0개의 댓글