본문 바로가기
OpenSource

GraphQL 사용법

by 푸푸망나뇽 2021. 8. 31.
반응형

GraphQL 이란?

GraphQL 은 Graph Query Language 의 줄임말로 API를 위한 쿼리 언어이다.

기존의 RESTful API는 아래와 같은 특징을 가지고 있는 반면

  • 데이터 요청방법과 형태가 연결되어있다. 
  • 여러 Resource에 접근하기 위해서는 요청을 여러번 보내야한다. 
  • Endpoint에 따른 API응답구조가 정해져있다.

GraphQL은 아래와 같은 점을 특징으로 한다.

  • 데이터 요청과 Resource형태 정의가 분리되어있다.
  • 한번의 요청으로 여러 Resource에 접근가능하다.
  • 하나의 Endpoint를 사용하며 원하는 응답구조로 응답받을수있다.

 

GraphQL API 사용법

GraphQL은 query와 mutation 두가지 타입으로 API요청을 보낸다.

 

1. query타입 : RESTful에서 get에 해당되는 쿼리

쿼리타입으로 resolver를 통해 정의된 함수를 호출하여 data를 응답받는다.

함수호출 후 {} 안에 응답받을 특정컬럼을 입력하여 보내주면 검색된 모든 컬럼을 가져오는것이 아니고 특정 컬럼만을 받아온다.

 

아래 예시는 resolver에 정의된 book함수를 호출하여 id가 1인 데이터를 검색해오는데 응답 칼럼은 title과 author를 받겠다는 의미이다. 

예제:

query {
    book(id: "1") {
        title
        author {
            firstName
            lastName
        }
    }
}

 

 

2. mutation타입: RESTful에서 delete,post,update에 해당하는 쿼리 

마찬가지로 resolver에서 mutation타입으로 선언된 함수를 호출하여 data를 입력받아온다.

또한 {} 속에 응답받을 컬럼을 입력하여 선택적으로 응답을 받아온다.

query타입과의 차이점은 RESTful에서 post형식으로 데이터를 보내는것과 같이 input을 통해 data를 전송한다.

 

아래 예시는 resolver에서 정의된 postTeam함수를 호출하여 Team데이터를 입력하는 쿼리이다. 입력 후 응답은 manager, office, extension_number 컬럼만을 받는다.

예시:

mutation {
  postTeam(input: {
    manager: "John Smith"
    office: "104B"
    extension_number: "#9982"
    mascot: "Dragon"
    cleaning_duty: "Monday"
    project: "Lordaeron"
  }) {
    manager
    office
    extension_number
  }
}
반응형

댓글