[API] RESTful vs GraphQL

ShinJuYong·2022년 3월 14일
0

공부한것들

목록 보기
5/33

API란?

  • API는 적절한 Requset를 하였을때 그에 맞는 Response를 되돌려 주는 창구를 Web을 통해 보여주는 것을 말한다

  • API는 주로 어떠한 정보들(뉴스,주식 시세,환율등등..)을 Request하고 수정하기 위해 만들어지는 경우가 많다.

RESTful이란?

모든 자원들을 하나의 창구로 연결해놓고,
각 창구에는 그 자원과 관련된 내용만 괸리하게 하자는 방법론.

  • 좁은 의미로는 HTTP Protocol을통한 CRUD(Create,Read,Update,Delete)를 실행하는 API

자원
자원이란 해당 소프트웨어가 관리하는 모든것
예를들어, DB의 유저정보가 자원이라면 USER == 자원이다.

REST API는 주소만으로도 이게 무슨 요청인지 추측할 수 있다.

// 예시
글을 보는 API = /posts
글 작성 = POST (/posts)
글 수정 = PATCH (/posts/[id])
글 삭제 = DELETE (/posts/[id])
등등등..

이러한 REST의 조건을 만족하는 APIfmf RESTful API라 부른다.

장점

  • HTTP프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있다.
  • REST API가 의도하는 바를 확실하게 나타내므로 의도하는바를 쉽게 파악가능.
  • 서버와 클라이언트의 역할을 확실하게 분리한다.

단점

  • 표준이 존재하지 않는다.
  • 사용할수 있는 메소드가 4개뿐.

GraphQL

GraphQL은 Graph Query Language의 줄임말이다.

탄생배경

  • RESTful로는 다양한 기종에서의 정보를 일일히 구현하는것이 어려웠다.
  • 때문에 정보를 사용하는 측에서 원하는 대로 가져오며, 보다 편하게 수정할 수 있도록 하는 표준화된 API를 만들었다.

RESTful과의 차이점.

  • 전체 API를 위해서 하나의 창구만을 사용한다.
    (RESTful API는 자원마다 하나의 창구를가지고있어 그 창구에서 그 자원에대한 거의, 모든것을 담당한다)
  • 요청할때 사용한 Query문에 따라 응답의 구조가 달라진다.
  • 유연하며, 백엔드에서 지정하는 틀이 거의 없다

장점

  • HTTP요청의 횟수를 줄일 수 있다.
  • HTTP응답의 크기를 줄일 수 있다.
    (즉 경량화된 API라는것)

단점

  • Image,Audio,File등등 Text만으로 하기 힘든내용들을 처리하기 매우 복잡하다.
  • 고정된 요청,응답만 필요한 경우에는 RESTful API보다 무거워진다.

그래서 GraphQL or RESTful?

GraphQL

  • 다른 모양의 다양한 요청에대한 응답을 필요로 할때.
  • 대부분의 요청이 CRUD인 경우

RESTful

  • HTTP에 의한 캐싱을 잘 사용하고 싶을때
  • Text만으로 처리되지 않는 요청들이 있는경우.
  • 요청의 구조가 정해진경우.

마무리

GraphQL은 시도해본적이 없어 들어보기만해봤는데, 이번 Nest.js를 진행하면서 기존에 시도해봤던 REST API뿐만아니라 GraphQL을 통한 웹서버 구현을 해봐야겠다.

참고한곳
GraphQL과 RESTful API
REST API와 GraphQL의 차이점

0개의 댓글

관련 채용 정보