[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개의 댓글