티스토리 뷰

Dev/GraphQL

[GraphQL] GraphQL을 시작하기 전

j.y.eunseo 2023. 3. 1. 16:15

# API란?

API란, Application Programming Interface의 약자로, 운영체제와 응용프로그램 사이의 통신에서 사용되는 언어 또는 메시지 형식을 의미한다.

 

쉽게 말하자면 상호작용의 방법이다. 기본적으로 사용자에게 노출되어 있으며 이를 통해 상호작용이 가능하다.

예를 들어 리모컨과 같이 사용자가 버튼을 눌러 TV 전원을 켜고 끄는 작업을 수행할 수 있다.

이때 리모컨은 TV에 정의된 규격에 의해 어떤 신호를 보낼 수 있는 장치로 이러한 신호를 주고받기 위한 방법을 인터페이스라고 한다.

 


# GraphQL이란?

  • GraphQL이란 하나의 specification으로 REST API와는 다르게, 클라이언트가 필요로 하는 데이터의 정확한 양과 유형을 지정할 수 있도록 하는 쿼리 언어를 제공한다. 이는 일반적으로 REST API에서 발생하는 과도한 데이터 전송 문제를 해결할 수 있다.
  • GraphQL은 또한 클라이언트와 서버 간의 느슨한 결합을 가능하게 하며, 여러 개의 데이터 소스에서 데이터를 수집하고 조합하는 것을 용이하게 한다. 또한 GraphQL 스키마를 사용하여 데이터 모델을 정의하고 문서화할 수 있다.
  • GraphQL은 다양한 언어와 프레임워크에서 사용할 수 있으며, 캐싱, 인증 및 보안과 같은 기능을 지원한다.
  • 이러한 이유로 GraphQL은 현재 웹 및 모바일 애플리케이션 개발에서 매우 인기 있는 기술 중 하나이다.

# GraphQL API vs REST API

API란 어플리케이션과 서버 사이의 통신 방법이라고 설명했다.

그렇다면 REST API와 GraphQL API의 차이점은 무엇일까? 

간단하게 말하면 두 API의 차이점은 바로 노출 범위이다.

## Rest API

서로 다른 서버간의 통신이나 iOS 어플리케이션이 서버와 통신할 때, URL 방식의 통신으로 이루어진다.

예를 들어, 수백만개의 영화를 데이터베이스에 가진 서버를 가지고 있으며, iOS 어플리케이션을 제작하는 도중 모든 영화를 정렬하고 싶다. 즉 서버에서 모든 데이터를 가져와야 하며 가져온 데이터를 화면에 보여주어야 한다.

이때 "helloworld.co.api/movies"와 같이 URL 형식의 Request를 보내고 JSON 형식의 배열 Response를 받는다.

💡 REST API는 리소스나 리소스 목록을 얻고자 할 때 URL 형식의 요청을 보내고 JSON 형식의 응답을 받는다.

 

REST API는 URL 형식으로 요청한다. 그런데 데이터를 생성하고 수정하고 삭제하는 요청은 어떻게 보낼 수 있을까?

대체적으로 URL은 규칙적이고 깔끔한 형식을 위해 동사보다는 명사를 사용하는 것을 권장한다.

이때 REST API는 HTTP Method를 사용하여 데이터를 요청한다. (GET, POST, PUT, DELETE)

 

GET/movie/{movie_id}

 

API URL은 서버에서 제공되어 있어 이에 올바른 URL로 API를 요청할 수 있으며, REST API는 조직화되어 있어 가시적으로 이해하기 쉽다 :)

💡 조직화되어 있어 사용하기 어렵지 않으며, 대부분의 디바이스들이 사용할 수 있는 API이다.

 

## GraphQL API

REST API의 단점을 보완해줄 수 있는 GraphQL API

 

  • Over-fetching
    • overfetching이란 내가 데이터를 쓰든 말든 너무 많은 data를 받아오는 현상을 말한다.
    • 즉, GraphQL API를 통해 필요한 데이터만 뽑아서 가져올 수 있다는 뜻.
  • Under-fetching
    • underfetching이란 overfetching과 반대로 필요한 것보다 덜 받는 것이다.
    • REST API는 여러 개의 URL에서 로딩이 필요한 반면, GraphQL API는 필요한 데이터를 단 하나의 Reqeust로 받아올 수 있다.
    • 예를 들어 REST API를 통해 id가 3인 영화 데이터를 받아온다고 가정하자. (GET /movies/3)
    • 수많은 데이터 정보들이 JSON 형식으로 응답하는데 이중 genre의 id가 {23, 56, 135}라고 오면 어떤 장르인지 알 수 있을까?
    • genre에 대한 API 요청을 또 한 번 요청해야 장르의 데이터를 받아올 수 있으며 그제야 3번 영화가 로맨스 영화임을 알 수 있을 것이다.

'Dev > GraphQL' 카테고리의 다른 글

[GraphQL] GraphQL API 구현 part 1  (0) 2023.03.01
댓글
«   2025/05   »
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 31
최근에 올라온 글