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서버에 보내면 된다.
2. Monday 기본 구조
먼데이는 기본적으로 하나의 Dashboard 안에 데이터가 삽입되어져 있는 구조이다.
아래 이미지의 경우 Dashboard > Group > Item 의 형태로 데이터가 존재한다
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 내부의 플레이그라운드에서 값을 호출해볼 수 있다.
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으로 호출 할 수 있는 워크스페이스를 공개 해 두었다.
(사실 이거면 다 된다)
상단으로 접속하여 원하는 mutation을 테스트 해보는 것도 좋아보인다.
참고 자료:
https://graphql-kr.github.io/learn/
https://developer.monday.com/api-reference/docs
https://tech.kakao.com/2019/08/01/graphql-basic/
'환경설정' 카테고리의 다른 글
Google Service Account 계정 생성 (0) | 2023.03.28 |
---|---|
Monday API - 사용 셋팅 (0) | 2023.03.26 |
Google API - OAuth 2.0 인증 (0) | 2023.03.19 |
Google API - Google Service Account 를 사용(Analytics API) (0) | 2023.03.17 |
Google API - POSTMAN 내 OAuth 2.0 인증 (0) | 2023.03.14 |