TIL. Restful API VS GraphQL

Teasan·2021년 1월 8일
0

API

목록 보기
2/2
post-thumbnail

Restful API

장점

  • REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍쳐 스타일이다.
  • HTTP 프로토콜을 사용하므로 REST API 사용을 위한 인프라를 구축할 필요가 없다.
  • HTTP 표준프로토콜을 따르는 모든 플랫폼에서 호환된다. (범용성)
  • REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
  • 서버와 클라이언트의 역할을 명확하게 분리한다.

단점

  • 표준이 존재하지 않는다.
  • 사용할수 있는 메소드가 4가지 밖에 없다.
  • 구형의 브라우저가 아직 지원하지 못하는 부분이 존재한다.

GraphQL

  • GraphQL 은 Graph Query Language 의 줄임말이다.
  • Query Language 는 정보를 얻기 위해 보내는 질의문(Query)을 만들기 위해 사용되는 Computer 언어의 일종이다.
  • GraphQL 은 이런 Query Language 중에서도 Server API 를 통해 정보를 주고받기 위해 사용하는 Query Language 이다.

GraphQL 탄생 배경

RESTful API 로는 다양한 기종에서 필요한 정보들을 일일히 구현하는 것이 힘들었다. 정보를 사용하는 측에서 원하는 대로 정보를 가져올 수 있고,보다 편하게 정보를 수정할 수 있도록 하는 표준화된 Query language 를 만들게 되었다.

장점

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

단점

  • File 전송 등 Text 만으로 하기 힘든 내용들을 처리하기 복잡하다.
    고정된 요청과 응답만 필요할 경우에는 Query 로 인해 요청의 크기가 RESTful API 의 경우보다 더 커진다.
  • 재귀적인 Query 가 불가능하다. (결과에 따라 응답의 깊이가 얼마든지 깊어질 수 있는 API 를 만들 수 없다.)

RESTful 과의 차이점

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

graphQL 은 뷔페 RESTful API 는 세트메뉴와 같다
뷔페는 내가 먹고 싶은것만 먹을수 있지만 세트메뉴는 내가 필요하지 않은것도 들어있다.

GraphQL or RESTful?

그렇다면 GraphQL 과 RESTful 중 어떤 것을 선택해서 사용해야하는가?

GraphQL

  • 서로 다른 모양의 다양한 요청들에 대해 응답할 수 있어야 할 때
  • 대부분의 요청이 CRUD(Create-Read-Update-Delete) 에 해당할 때

RESTful

  • HTTP 와 HTTPs 에 의한 Caching 을 잘 사용하고 싶을 때
  • File 전송 등 단순한 Text 로 처리되지 않는 요청들이 있을 때
  • 요청의 구조가 정해져 있을 때

출처
얄팍한 코딩사전

profile
일단 공부가 '적성'에 맞는 개발자. 근성있습니다.

0개의 댓글