그 외

Rest API VS. GraphQL

날아 2024. 3. 27. 19:53

1. API란?

Application Programming Interface의 약자로, 소프트웨어 응용 프로그램에서 다른 소프트웨어 구성 요소 또는 서비스와 상호 작용하기 위한 인터페이스를 제공하는 프로그래밍 기술 

클라이언트와 서버 사이의 데이터 전송 통신을 위한 규칙이나 방법

 

2. GraphQL

2012년도 페이스북 개발자들이 개발한 REST를 대체하는 데이터 질의 쿼리 언어 

 

2-1. REST API를 대체한 이유

주로 핸드폰 사용자가 많았던 페이스북에서는 앱의 복잡성이 늘어남에 따라서 REST API를 사용한 방식에 문제를 느꼈다.

그렇다면 REST API의 문제는 무엇이었을까? 

  • 끝없는 엔드포인트
    • 서비스가 확장될수록 엔드포인트가 늘어남
    • 만약 엔드포인트가 변경 되었을 경우, 프론트 및 백엔드 모두 수정해야한다.
  • API Docs 최신화 및 버전관리 문제
    • 백엔드가 API를 만들거나 변경될 경우 사용하는 방법을 적어놓은 API 명세를 관리해야한다.
    • 관리가 되지 않을 경우 호환의 문제가 발생하여 프론트가 개발을 하는데 차질이 생길 수 있다.
  • Over-Fetching 문제
    • 불필요한 정보를 같이 받아오는 것을 Over-Fetching이라고 한다.
    • REST API가 요청을 할 경우 모든 데이터를 받아오게 되는데 이러한 문제로 수많은 요청이 있을 경우 성능이 하락된다.
  • Under-Fetching 문제
    • 요청을 한 것에 관련된 정보를 가져오기 위해 반복 호출을 하는 것을 Under-Fetching이라고 한다
    • REST API에서는 이것을 하기 위해서 호출을 한 후 반복문을 돌려서 또다시 API 요청을 해야 한다.

 

2-2. 어떻게 대체하였는가? 

단 한 개의 엔드포인트, 두 개로 통합된 메서드

 

REST API의 GET은 Query로,

POST, PUT, DELETE는 Mutation 으로 사용한다. 

(3가지의 메소드가 Mutation으로 통합되다보니 어떤 API인지 확인하기 위해 API 앞단에 fetch, create, delete, update 를 적는 편이다)

 

자체적인 API Docs를 지원하는 ApolloServer

 

RestAPI는 axios를 사용하여 API를 통신하고 스웨거같은 툴을 사용하여 API Docs를 만들어야한다.

그러나 GrapgQL은 Apollo Clinet / Server를 사용하여 API를 통신하고 Code First를 적용시켜 작업한 api에 대한 명세를 자동으로 갱신시킨 후 플레이그라운드라는 IDE에서 API를 사용해볼 수 있고, 세부적인 명세를 확인할 수 있다. 

 

원하는 데이터만 골라서 받아올 수 있는 GrapgQL

 

REST API를 사용하면 같은 url을 사용할 경우 항상 동일한 정보를 받게 된다. 하지만 모든 데이터가 필요하지 않다면 over-fetching이 발생한다. 

반면, GrapgQL을 사용한다면 설정한 쿼리에 따라 정보를 받게 된다.

'그 외' 카테고리의 다른 글

Process vs Thread  (0) 2023.02.05
AJAX (Asynchronous Javascript And XML)  (0) 2023.01.31