본문 바로가기

환경설정

Monday API - 쿼리 호출 (기본)

1. GraphQL 기본 개념 

"Think in graphs, not endpoints. (엔드포인트가 아닌 그래프로 생각하세요)" 

 Lee Byron(GraphQL Co-Inventor)
4년간의 GraphQL에서 얻은 교훈 .

 

페이스북(이제 Meta?!)에서 개발하고 오픈소스로 제공한 GraphQL은 기존의 REST API와는 다르다.
기존 REST와는 다르게 GraphQL 은 클라이언트가 API에서 필요한 데이터를 정확하게 지정할 수 있는 
선언적 데이터 가져오기(declarative data fetching)로 데이터를 가져온다
다시말해 여러 endpoint 대신 단일 엔드포인트만 노출하고 클라이언트가 노출한 데이터로 응답하는 형태.

SQL VS GraphQL 

SQL 과 혼동되는 경우가 있지만, SQL은 데이터베이스에서 원하는 데이터를 효율적으로 가져오는것이 목적이고 
GraphQL API용 쿼리언어로 웹 클라이언트가 데이터를 서버로부터 가져오는것이 목적이다.
때문에 데이터베이스의 구애를 받지 않으며 API가 사용되는 모든 컨텍스트에 효과적으로 사용할 수  있다. 

REST VS GraphQL 

REST API는 클라이언트의 빠른 변화를 따라잡기에는 유연하지 않다. 
GraphQL은 이런 유연성과 효율성에 대한 요구를 대처하기 위해 개발된 언어로
REST API의 단점을 해결하고자 개발되었다.
예를 들어, REST API를 사용하면, 여러 엔드포인트에 액서스 하여 데이터를 수집해야 한다.
반면에 GraphQL 은 구체적인 데이터 요구사항을 포함하는 쿼리를 GraphQL서버에 보내면 된다.

(우) REST , (좌)GrapQL  REST의 경우 필요한 정보를 가져오기위해 3번의 호출을 해야 하는 반면, GrapQL은 한번이면 족하다

2. Monday 기본 구조

먼데이는 기본적으로 하나의 Dashboard 안에 데이터가 삽입되어져 있는 구조이다.
아래 이미지의 경우 Dashboard  > Group > Item 의 형태로 데이터가 존재한다

Dashboard : Q3프로젝트 개요, Groups :이번달/다음달, Items :킥오프자료, 계약자계약 갱신 등

 REST 이 이 계층 구조를 호출하기 위해선  여러번 호출해야 하지만 GraphQL은 쿼리로 계층 구조 호출이 가능하다.

3. query 

Monday의 기본 쿼리방식은 아래와 같다 

query{
  boards(ids:1234567){
    items{
      id
      name
    }
  }
}

 

ids값의 기본은 URL 뒤의 숫자 Number 이다. 

https://tdeal.monday.com/boards/1234567

 

Read 하는 쿼리의 예로 특정 보드(ids:1234567)의 내부 항목 id와 name을 검색하는 쿼리이다.
이 방법으로 Dashboard > Group > item 의 id와 title, name을 호출하고자 하면 아래와 같이 작성 한다

query {
    boards (ids: 123456789) {
        groups {
            id
            title 
            items{
                id
                name
             }
        }
    }
}

 

단일 요청으로 여러개의 API 호출도 가능하다. 

query {
  checkBoard1: boards(ids:12345678){
    id
    name
  }
  checkBoard2: boards(ids:87654321){
    id
    name
  }
}

 

Monday 내부의 플레이그라운드에서 값을 호출해볼 수 있다. 

ids 값만 board의 ids 값을 삽입하면 된다.

3. mutation

서버로부터 정보를 요청하는 것 외에 백엔드에 저장된 데이터를 변경하는 방법이다
기존 조회와는 다르게  Create & Update & Delete 등 데이터의 변경이 일어날때 사용한다.
쿼리와 동일한 구문 구조를 따르지만 항상 'mutation' 키워드로 시작해야 한다. 

각각의 구문은 Board, Group, Item 에 따라 다르며 해당 가이드는 아래 url을 참조하면 된다 

mutation {
    create_board (board_name: "my board", board_kind: public) {
        id
    }
}

상단은 Board 생성 구문 

board 이름이 'my board' 이며 오픈된 보드가 생성된다. 생성이 완료 되면 id값을 반환한다. 

각각의 Monday API 구문은 다음에 좀더 자세히 작성하려 한다. 

 

찾아보니 Monday가 엄청 좋아진게 postman으로 호출 할 수 있는 워크스페이스를 공개 해 두었다. 

(사실 이거면 다 된다) 

https://www.postman.com/matiasdavidson/workspace/monday-com-queries-and-mutations/collection/17637789-b18ebc66-bc27-49b5-a950-3dfa4bfb3a21?ctx=documentation 

상단으로 접속하여 원하는 mutation을 테스트 해보는 것도 좋아보인다. 

 

 

참고 자료:

https://graphql-kr.github.io/learn/

 

GraphQL: API를 위한 쿼리 언어

GraphQL은 API에 있는 데이터에 대한 완벽하고 이해하기 쉬운 설명을 제공하고 클라이언트에게 필요한 것을 정확하게 요청할 수 있는 기능을 제공하며 시간이 지남에 따라 API를 쉽게 진화시키고

graphql-kr.github.io

https://developer.monday.com/api-reference/docs

 

monday.com GraphQL API

The monday GraphQL API allows developers to programmatically access and update data inside a monday.com account. It is part of the monday apps framework.

developer.monday.com

https://tech.kakao.com/2019/08/01/graphql-basic/

 

GraphQL 개념잡기

GraphQL은 페이스북에서 만든 쿼리 언어입니다. GrpahQL은 요즘 개발자들 사이에서 자주 입에 오르내리고 있으나, 2019년 7월 기준으로 얼리스테이지(early-stage)임은 분명합니다. 국내에서 GraphQL API를 O

tech.kakao.com