A typical GraphQL Query


GraphQL은 필요에 따라 REST API의 대안으로 원하는 컬럼만 요청이(POST) 가능하다

출처: 유튜브 얄팍한 코딩사전 (태권도우..ㅋㅋㅋ)


위처럼 타입 지정도 가능!

REST API vs GraphQL


REST API
- URI 마다 하는 작업/정보가 정해져있음
- 받아야 하는 항목이 많고 정해져있는 경우에 용이
- 필요에 따라 데이터 요청 시 요청 여러번 해야하는 경우 있음
ex) 반의 정보와 학생들 명단 > 두 번 요청해야 함
- 비동기적 코드는 한 번의 요청보다 복잡해짐

GraphQL
- 필요하지 않은 정보는 제외하고 body에 들어가는 정보로 유연하게 요청 가능 (구현 필요)
- 다른 depth들의 정보도 한 번에 요청 가능 = 클라이언트 구현 편함

같은 API 서버를 쓰더라도 사용자/기기/상황마다 필요로 하는 정보가 다른 서비스에 용이하다

여러 depth의 데이터 요청


GraphQL 정보요청, 삽입, 수정 방식 = POST

데이터 Create

 

데이터 Update, Delete


결론
REST API : 요청 단순(URI), 데이터 복잡
GraphQL : 요청 복잡(bracket), 데이터 효율적

백엔드서버에 둘다 구현 가능

GraphQL 구현
방법, 환경, 디테일 가지각색임
> 공식 사이트에 언어마다 라이브러리 제공
(C#/NET, Go, Groovy, Java, Python, Ruby, JavaScript, Kotlin, PHP, Scala, Swift.....)

GraphQL 구현부 (node.js / Express 사용)

1) app 이름으로 서버 생성
2) app.use에 인자 넣음 > 이 URI로 GraphQL 요청 받을 준비가 됨

- schema : 데이터 구조/표현법/관계

type Query{
메소드명 : [스키마명]
}

type 스키마명{
컬럼명 : 자료형, ...
}

- resolver : 각 메소드명의 요청마다 실제 작업이 어떻게 진행될지 구현 (하드코딩)

type Mutation{
db작업명(input : 스키마명Input) : Int
}

input 스키마명Input{
컬럼명 : 자료형,...
}

db작업명 : async ({input}) =>
const insertResultData = await new Promise((resolve) =>
connection.query( 쿼리 작성..)

return { idx : insertResultData.insertId }

조만간 얄팍한 코딩사전님 영상 보면서 꼭 실습을 해봐야겠다 ...!


Reference

 

GraphQL, solving REST’s problems

What is GraphQL?

medium.com

 

반응형

+ Recent posts