GraphQL은 필요에 따라 REST API의 대안으로 원하는 컬럼만 요청이(POST) 가능하다
위처럼 타입 지정도 가능!
REST API vs GraphQL
• REST API
- URI 마다 하는 작업/정보가 정해져있음
- 받아야 하는 항목이 많고 정해져있는 경우에 용이
- 필요에 따라 데이터 요청 시 요청 여러번 해야하는 경우 있음
ex) 반의 정보와 학생들 명단 > 두 번 요청해야 함
- 비동기적 코드는 한 번의 요청보다 복잡해짐
• GraphQL
- 필요하지 않은 정보는 제외하고 body에 들어가는 정보로 유연하게 요청 가능 (구현 필요)
- 다른 depth들의 정보도 한 번에 요청 가능 = 클라이언트 구현 편함
같은 API 서버를 쓰더라도 사용자/기기/상황마다 필요로 하는 정보가 다른 서비스에 용이하다
GraphQL 정보요청, 삽입, 수정 방식 = POST
결론
REST API : 요청 단순(URI), 데이터 복잡
GraphQL : 요청 복잡(bracket), 데이터 효율적
백엔드서버에 둘다 구현 가능
GraphQL 구현
방법, 환경, 디테일 가지각색임
> 공식 사이트에 언어마다 라이브러리 제공
(C#/NET, Go, Groovy, Java, Python, Ruby, JavaScript, Kotlin, PHP, Scala, Swift.....)
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
'Web' 카테고리의 다른 글
REST, RESTful, REST API - 그런 REST API로 괜찮은가 (6) | 2022.04.24 |
---|---|
프레임워크 vs 라이브러리 (vs API) 비교, 표준 라이브러리, 런타임 라이브러리 (2) | 2021.06.16 |