1. GraphQL이 등장하기 전 - Rest API
클라이언트 개발을 하면서 서버와 통신을 해야할 때, 서버가 구현해놓은 API를 호출하여 데이터를 보내거나 받아온다.
Representational State Transfer(REST)는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처이다. REST API는 서버가 균일한 인터페이스로 정보를 전송할 수 있게 하는 대표적인 표준 형식과 같은 것이다.
즉, 우편을 보낼 때 '보내는 분', '받는 분'등의 균일한 형식으로 보내는 것처럼 데이터를 클라이언트와 서버간 주고 받을 때 일정한 형식으로 보내는 것을 REST API라 할 수 있다.
REST API는 URL형식 ( 어떤 정보 ) * 요청 방식 (어떻게 할 것인가 - 용도) 로 구성되어있다.
요청 형식 | 용도 |
GET | 정보 받아오기 |
POST | 정보 입력하기 |
PUT/PATCH | 정보 수정하기 |
DELETE | 정보 삭제하기 |
- REST API 예시
글 관련 API = /posts
글 작성 = POST /posts
글 수정 = PATCH /posts/[postid]
글 삭제 = DELETE /posts/[postid]
댓글 관련 API = /posts/[postid]/comments
댓글 작성 = POST /posts/[postid]/comments
댓글 수정 = PATCH /posts/[postid]/comments/[commentid]
댓글 삭제 = DELETE /posts/[postid]/comments/[commentid]
- REST API의 한계
1. Over- Fetching
API 호출 시 필요보다 많은 데이터(사용하지 않는)를 가져오는 것이다.
불필요한 정보로 인해 서버와 네트워크의 자원이 불필요하게 추가로 사용된다.
2. Under-Fetching
하나의 요청으로 충분한 데이터를 받지 못하는 것을 말하고, 그로 인해 두 개 혹은 그 이상의 요청을 해야한다.
그러면 단일 API 호출에 비해 네트워크 오버헤드가 추가되기 때문에
사용자가 앱 사용시 느린 속도로 인한 불편함을 느낄 수 있다.
GraphQL 의 등장
이 한계 때문에 정보를 사용하는 측에서 원하는 대로 정보를 가져올 수 있고, 보다 편하게 정보를 수정할 수 있도록 하는 표준화된 Query language - GraphQL 를 만들게 되었다.
2. GraphQL 이란?
GraphQL 은 Graph Query Language 의 줄임말이다.
Query Language
Query Language 는 정보를 얻기 위해 보내는 질의문(Query)을 만들기 위해 사용되는 Computer 언어의 일종이다.
- GraphQL의 강점
- 필요한 정보들만 선택하여 받아올 수 있음.
- Overfetching 문제 해결
- 데이터 전송량 감소 - 여러 계층의 정보들을 한 번에 받아올 수 있음.
- Underfetching 문제 해결
- 요청 횟수 감소 - 하나의 end point 에서 모든요청 처리
하나의 URI에서 POST로 모든 요청 가능
- GraphQL 사용해보기
///팀정보 받아오기
query {
teams {
id
manager
office
extension_number
mascot
cleaning_duty
project
}
}
///ID가 1인 팀의 manager, office 정보만 받아오기
query {
team(id: 1) {
manager
office
}
}
///팀 목록과 역할 목록 받아오기
query {
teams {
manager
office
mascot
}
roles {
id
requirement
}
}
3. Apollo는 무엇이고, 쓰는 이유?
GraphQL은 명세, 형식일 뿐 GraphQL를 적용하여 서비스를 만들려면 GraphQL를 구현할 솔루션 필요하다. APOLLO는 GrapgQL을 편하게 사용할 수 있도록 도와주는 라이브러리이다.
- 백엔드에서 정보를 제공 및 처리
- 프론트엔드에서 요청 전송
GraphQL.js,AWS Amplify 등등의 다양한 솔루션 라이브러리가 존재하지만 Apollo가 가장 많이 쓰이고 서버, 클라이언트 모두 사용가능하다.
Apollo GraphQL
- 백엔드와 프론트엔드 모두 제공
- 간편하고 쉬운 설정
- 풍성한 기능들 제공
https://www.apollographql.com/docs/apollo-server/
Introduction to Apollo Server
Apollo Server is an open-source, spec-compliant GraphQL server that's compatible with any GraphQL client, including Apollo Client. It's the best way to build a production-ready, self-documenting GraphQL API that can use data from any source. A gateway for
www.apollographql.com
https://www.apollographql.com/docs/react/
Introduction to Apollo Client
Apollo Client is a comprehensive state management library for JavaScript that enables you to manage both local and remote data with GraphQL. Use it to fetch, cache, and modify application data, all while automatically updating your UI. Apollo Client helps
www.apollographql.com
'FrontEnd > FE-study' 카테고리의 다른 글
[FE] SPA vs MPA? (0) | 2022.07.31 |
---|---|
[FE] SSR과 CSR 이란? (0) | 2022.07.31 |
[FE] 기초부터 완성까지 프론트엔드 2장 HTML 과 CSS (2) | 2022.07.29 |
[FE] 기초부터 완성까지 프론트엔드 00 - 목차 및 책 소개 (0) | 2022.07.16 |
[Typescript] 타입스크립트란? (타입스트립트 사용하기) (0) | 2022.05.31 |