개요
- API 를 위한 서버측 런타임 쿼리 언어(Query Language)이다.
- REST API 를 대체할 수 있다.
- 단일 API 호출로 다양한 데이터 소스에서 데이터를 끌어오는 요청을 구성할 수 있도록 지원한다.
- API 유지 관리자에게 기존 쿼리에 영향을 미치지 않고 필드를 추가하거나 폐기할 수 있는 유연성을 부여한다.
주요 용어
- 스키마
- API 개발자는 클라이언트가 서비스를 통해 쿼리할 가능성이 있는 모든 데이터를 설명하는 스키마를 생성한다. 쿼리가 수신되면 GraphQL은 스키마에 대해 쿼리를 검증하고 그 다음 검증된 쿼리를 실행한다.
- 리졸버
- API 개발자는 스키마의 각 필드를 리졸버라고 불리는 기능에 첨부한다. 실행 중 값을 생산하기 위해 리졸버가 호출된다.
- 쿼리, 변형(mutation)
- 클라이언트에서 주로 수행하는 명령은 쿼리, 변형이다. CRUD 에 비유하자면 쿼리는 Read 이고 변형은 나머지 모두이다.
기업 환경에서 장단점
장점
- GraphQL 스키마는 GraphQL 애플리케이션에 신뢰할 수 있는 단일 소스를 하나 설정하고, 이를 통해 전체 API 연합할 수 있게 됩니다. (? 뭔소린지 잘모르겠다..)
- GraphQL 호출은 단일 왕복으로 처리됩니다. 클라이언트는 과도하게 가져오지(Overfetching) 않고 요청한 것을 얻습니다.
- REST 는 정해진 규격대로 데이터를 응답하는데, 여기에는 필요하지 않은 데이터들이 포함(Overfetching)될 수도 있다. GraphQL 은 이러한 단점을 해결해준다.
- 강력하게 정의된 데이터 유형은 클라이언트와 서버 간의 잘못된 통신을 줄입니다.
- GraphQL은 내부지향적이며, 클라이언트는 사용 가능한 데이터 유형 목록을 요청할 수 있습니다. (자동 생성 문서에 이상적입니다.)
- GraphQL을 사용하면 애플리케이션 API가 기존 쿼리를 중단하지 않고 발전할 수 있습니다.
- 많은 오픈 소스 GraphQL 확장 프로그램을 사용하여 REST API에서 사용할 수 없는 기능을 제공할 수 있습니다.
- GraphQL은 특정 아키텍처를 지시하지 않습니다. 기존 REST API 위에 도입할 수 있으며 기존 API 관리 도구와 함께 사용할 수 있습니다.
단점
- GraphQL은 데이터 쿼리 작업의 대부분을 서버 측으로 이동하므로 서버 개발자에게 복잡성이 추가됩니다.
- 구현 방법에 따라 GraphQL은 특히 속도 제한 및 가격 책정을 고려할 때 REST API와 다른 API 관리 전략이 필요할 수 있습니다.
- 캐싱은 REST보다 더 복잡합니다.
- API 관리자는 유지 관리 가능한 GraphQL 스키마를 작성하는 추가 작업이 있습니다.
'잡학사전' 카테고리의 다른 글
| MapStruct 란? (0) | 2023.04.14 |
|---|---|
| Github Actions 공식문서 정리 #1 (0) | 2023.03.31 |
| 조코딩 님의 chat gpt 이용한 웹 서비스 강의 (0) | 2023.03.25 |
| Docker, 도커 (0) | 2023.02.26 |
| HTTP (0) | 2022.12.22 |