[CS] - Restful API 와 GraphQL 의 차이점

Sean yang~~·2023년 1월 10일
0
post-thumbnail

한달전 우연히 공부를 하던중 주변 지인이 흘러가는 말로 했던 것을 들은적이 있다.
'요즘은 Resftful API 보다는 GraphQL'이 뜨고 있는 추세..라고 맨처음은 그냥 듣고 흘려보냈었던거같다. 그때는 팀프로젝트하느라 정신이 없었기때문에..

그때 들었던 말이 Resful API 를 공부하는 도중 우연히 생각이나 한번 찾아보았다.

GraphQL 이란?

facebook이 2012년에 개발하여 2015년에 공개한 쿼리 언어로써, API를 만들 때 사용할 수 있고, 그와 동시에 쿼이에 대한 데이터를 받을 수 있다.

  • SQL: 데이터베이스에 저장된데이터를 효율적으로 가져오는 것을 목적으로 한다.
  • GraphQL: 웹 클라이언트가 데이터를 서버로부터 효율적으로 가져오는 것을 목적으로 한다.

GraphQL은 왜 탄생해야 했는가?

왜, REST 방법론이 있는데도 새로운 언어인 GraphQL이 탄생해야 했던 배경이 무엇일까?

  • Restful API 로는 다양한 기종에서 필요한 정보들을 일일이 구현하는 것이 힘들었다.
  • 그 예로, ios 와 Android 에서 필요한 정보들이 조금씩 달랐고, 그 다른 부분마다 API 를 구현하는 것이 힘들었다.

이 때문에 정보를 사용하는 측에서 원하는대로 정보를 가져올 수 있고, 보다 편하게 정보를 수정할 수 있도록 하는 표준화된 Query Language 를 만들게 되었다.

GraphQL 과 Restful의 차이점

  1. graphQL API 는 주로 하나의 end-point를 사용한다.
  2. graphQL API 는 요청할 때 사용한 Query 문에 따라 응답의 구조가 달라진다.

장점

  1. http 요청의 횟수를 줄일 수 있다.
  • restful은 각 resource 종류별로 요청을 해야하고, 따라서 요청횟수가 필요한 resource의 종류에 비례한다. 반면, graphql은 원하는 정보를 하나의 query에 모두 담아 요청을 하는 것이 가능하다.
  1. http 응답의 size를 줄일 수 있다.
  • resuful은 응답의 형태가 정해져있고, 따라서 필요한 정보만 부분적으로 요청하는 것이 힘들다.
    반면, graphql은 원하는 대로 정보를 요청하는 것이 가능하다.

단점

  1. file 전송 등 Text 만으로 하기 힘든 내용들을 처리하기 복잡하다.
  2. 고정된 요청과 응답만 필요한 경우에는 query로 인해 요청의 크기가 restful API 의 경우보다 더 커진다.
  3. 재귀적인 query가 불가능하다. (결과에 따라 응답의 깊이가 얼마든지 깊어질 수 있는 api를 만들수 없다.)
profile
나는 프론트엔드 개발자다!

0개의 댓글