[WEB] REST API vs GraphQL

esthevely·2022년 5월 28일
0

Tech

목록 보기
2/2

스터디에서 API Call과 Axios 관련 내용들을 공부하던중 ..
스터디원에게 REST API와 GraphQL를 비교해보면 좋을 것 같다고 공부 주제를 추천(?) 받았다 !

🌈 REST API란?

REST API란 쉽게 말하면 API를 작성하는 하나의 관행 또는 규칙이라고 할 수 있다.

REST API 를 사용하면 GET, POST, PUT 등의 HTTP Methods와 조합하여 같은 URL로 여러 동작을 할 수 있다.

제일 기본적인 규칙들로는 다음이 있다

  • 명사는 복수명사를 사용한다
    ex) movie.com/movies
  • 동사는 넣지않는다
    ex) movie.com/getMovie(x)
    -> 동사 대신 HTTP Methods를 사용
  • 각 요청은 stateless하다
    -> 요청 간에 클라이언트 정보가 저장되지 않으며, 각 요청이 분리되어 있고 서로 연결되어 있지 않음

이 규칙을 잘 지킨 API는 RESTful하다고 한다

처음에 REST API에 대한 개념을 접했을 때 진짜 여러개 문서를 읽어보았는데도너무 추상적이어서 잘 이해가 안됐던 기억이 있다 ..
잘 이해가 안되면 그냥 API를 통일성있게 만들기 위한 하나의 명세서라고 생각하면 될 것같다

이 포스팅에서는 REST API의 개념에 대해 다루는것이 아니니 우선 넘어가겠다

📌 REST API의 문제점(한계)

이렇게 제일 유명하게 사용하는 REST API에도 문제점이 있다

대표적으로 두가지 문제점을 꼽는데, Over FetchingUnder Fetching 이다

Over Fetching

Over Fetching은 말그대로 필요하지 않은 정보까지 과하게 가져오는 것을 말한다

페이스북을 예시로 들어보자

프로필을 클릭해서 드롭다운 바를 켠다고 했을때 필요한 정보는 이름과 프로필 사진 정도이다

그런데 대체로 유저의 DB는 이런식으로 여러 종류의 데이터를 가지고있다

우리는 절대 여기서 모든 정보를 가지고 오고싶지 않은데, 프로필 드랍다운을 누를때마다 로그인 이력과 주소, 전화번호까지 가져오면 불필요한 네트워크 부하를 일으킬것이다

뭐 .. 용도마다 다른 API를 만들수도 있겠지만 서비스 규모가 커지고 복잡한 로직이 많이 들어가면 이럴때마다 새로운 API를 만들어내면 관리가 어려울 것이다.

Under Fetcing

Under Fetching은 반대로 필요한 정보를 한번에 가져올 수 없어 불필요하게 다중 API Call을 해야하는 것을 말한다.

예를 들어, 알림을 받아오기 위해 알림창을 열었을 때 우리는 알림목록 API를 부르고, 이 중 내 친구가 있다면 친구 목록 API에서 친구의 ID값을 가지고 유저 API를 요청하여 친구의 이름과 프로필 사진을 가져오는 등 .... 여러 정보가 필요한 상황에서는 이렇게 다중 API Call 이 필요한데, 이도 효과적인 방법이라고 할 수 없다

GraphQL의 등장

이런 REST API의 문제를 해결하기 위해 등장한것이 GraphQl이다

REST API와 GraphQL의 차이점

  1. RESTful API 는 Resource 마다 하나의 Endpoint 를 가지고, 그 Endpoint 에서 그 Resource 에 대한 거의 모든 것을 담당한다. 반면, GraphQL 은 전체 API 를 위해서 단 하나의 Endpoint 만을 사용한다.

  2. Restful API 는 하나의 Endpoint 에서 돌려줄 수 있는 응답의 구조가 정해져 있는 경우가 많다. 반면, GraphQL 은 사용자가 응답의 구조를 자신이 원하는 방식으로 바꿀 수 있다.

profile
프론트엔드개발자가 되고싶은 🥔✨

0개의 댓글