일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- java
- #크랙미 9번
- #크랙미2번
- Spring
- #보안뉴스
- #고클린
- Easy
- #abex
- GraphQL
- java8
- #크랙미 10번
- #크랙미3번
- #크랙미4번
- #파밍
- springframework
- #크랙미 5번
- #abex크랙미
- #심플즈 크랙미
- #크랙미
- #리버싱
- #보안이슈
- 리버싱
- leetcode
- #abex크랙미4번
- #심플즈
- Today
- Total
Halo World
[GraphQL] GraphQL 기초 (REST API와 비교, GraphQL 강점, Apollo란?) 본문
[GraphQL] GraphQL 기초 (REST API와 비교, GraphQL 강점, Apollo란?)
_Yeony 2022. 2. 5. 18:13
본 포스팅은 Inflearn 얄코님 강의를 수강하며 복습용으로 작성하였습니다.
https://www.inflearn.com/course/%EC%96%84%ED%8C%8D%ED%95%9C-graphql-apollo/dashboard
GraphQL은 Rest API 방식의 단점을 보완할 수 있는 방법
Rest API 방식의 단점
아래와 같은 경우가 발생하기 쉽다.
- 불필요한 정보까지 받아오는 상황 (OverFetching)
- 필요한 정보를 못 받아오는 상황 (UnderFetching)
ex) OverFetching : 사용자의 이름만 필요한데, 이름 외적인 개인정보도 함께 Response로 받게 됨
UnderFetching : 특정 사용자 정보의 response로 또 다시 쿼리를 해야하는 상황.
Response로 1번 사용자가 속한 팀을 알아내고, 그 팀에 속한 팀원들을 알아야 하는 경우 -> 2번 쿼리 필요
GraphQL로 CRUD 해보기
https://gitlab.com/yalco/yalco-inflearn-graphql-apollo
코드는 위 얄코님 강의의 1-3으로 사용하였다.
1. query
GraphQL에서 Read에 해당하는 요청으로 REST API와 달리 원하는 정보만 쿼리할 수 있다.
- 각 팀 목록에서 manager와 office에 해당하는 정보만 쿼리 (Over fecthing 해결)
- 팀 1의 특정 정보와 팀 1에 속하는 팀 멤버의 값 리턴 (Under fetching 해결)
2. mutation
GraphQL에서 생성/수정/삭제 요청 시 사용하는 명령어
2-1. 팀 정보 생성 요청
2-2. 팀 정보 수정 요청
2-3. 팀 정보 삭제 요청
GraphQL의 강점
1. 필요한 정보만 선택하여 받아올 수 있음
- Overfetching 문제 해결
- 데이터 전송량 감소
2. 여러 계층의 정보를 한꺼번에 받아올 수 있음
- Underfetching 문제 해결
- 요청 횟수 감소
3. 하나의 endpoint에서 모든 요청을 처리
- 하나의 URI에서 POST로 모든 요청을 처리 가능
- query, mutation 모두 POST로 처리됨
그러나, REST API의 장점도 충분히 많기 때문에 상황에 따라 적절하게 선택해 사용해야 한다.
Apollo 란?
- GraphQL은 REST API와 마찬가지로 API 요청을 주고받는 명세일 뿐이다.
- 이를 사용하려면 GraphQL의 명세대로 백엔드/프론트엔드를 구현하거나, 이를 처리해주는 솔루션을 사용하여야 함
ex) GraphQL.js, GraphQL Yoga, AWS Amplify, Relay 등..
(https://graphql.org/code/ 에서 GraphQL을 위한 여러 솔루션들을 확인할 수 있다.) - Apollo는 이 솔루션들 중 하나
- BackEnd, FrontEnd 모두 제공
- 설정이 쉽고, 다양한 기능 제공
- Apollo Server 명세 : https://www.apollographql.com/docs/apollo-server/
- Apollo Client 명세 (React) : https://www.apollographql.com/docs/react/
'개발 지식 > DEVELOPMENT' 카테고리의 다른 글
[GraphQL] GraphQL 클라이언트 만들어보기 (0) | 2022.02.13 |
---|---|
[GraphQL] GraphQL 서버 깊이 파보기 (2) (0) | 2022.02.13 |
[GraphQL] GraphQL 서버 깊이 파보기 (1) (0) | 2022.02.13 |
[GraphQL] Apollo-server 셋팅 (0) | 2022.02.08 |