REST API와 GraphQL

정민준·2022년 11월 16일
0

CS공부

목록 보기
3/9

REST API란?

REST란 REpresentational State Transfer의 약자로 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다. 즉, 자원을 주고받는 웹 상에서의 통신 체계에 있어서 범용적인 스타일을 규정한 아키텍쳐 라고 할 수 있다.
API란 Application Programming Interface의 약자로 구글 맵 API, 카카오 비전 API 등 기존에 있는 응용 프로그램을 통해서 데이터를 제공받거나 기능을 사용하고자 할 때 사용하는 인터페이스 및 규격 을 말한다. API는 프로그래밍 언어, 운영체제 등에서도 사용되는 범용적인 용어이다.

따라서, REST API라는 것은 REST 원칙을 적용하여 서비스 API를 설계한 것을 말하며 대부분의 서비스가 REST API를 제공한다.

  • 아키텍쳐 : 시스템 구성과 동작원리 그리고 시스템의 구성환경등을 설명 및 설계하는 청사진 또는 설계도

REST API의 장단점

장점
1. HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구출할 필요가 없다.
2. HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
3. REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
4. 서버와 클라이언트의 역할을 명확하게 분리한다.

  • 서버 : API를 제공하고 비즈니스 로직 처리 및 저장을 책임진다.
  • 클라이언트 : 사용자 인증이나 context(세션, 로그인 정보) 등을 직접 관리하고 책임진다.

    단점
  1. 표준이 자체가 존재하지 않아 정의가 필요하다.
  2. 사용할 수 있는 메소드가 4가지밖에 없다.
  3. HTTP Method 형태가 제한적이다.
  4. 브라우저를 통해 테스트할 일이 많은 서비스라면 쉽게 고칠 수 있는 URL보다 Header 정보의 값을 처리해야 하므로 전문성이 요구된다.
  5. overfetching(필요 이상의 데이터), underfetching(필요 이하의 데이터)이 발생할 수 있다.

GraphQL이란?

GraphQL은 facebook에서 만든 API를 위한 쿼리언어로 웹 클라이언트가 데이터를 서버로부터 효율적으로 가져오는 것이 목적으로 만들어졌다.

GraphQL의 장단점

장점
1. 하나의 endpoint를 사용해서, API나 View를 따로 구성할 필요가 없어진다.
요청을 보낼때는 정해진 한 군데로만 요청을 보내면 되고, 그 외의 API를 신경쓸 필요가 없어져, 유지보수가 용이해진다.
2. 정확한 데이터를 가져오므로, overfetching이나 underfetching이 없다.
3. ios, Android 등 기종에 상관없다.

단점
1. HTTP의 캐싱 전략은 각각 URL에 각자의 정책을 설정하는 방식으로 이루어 지는데, RESTful API는 이를 그대로 사용이 가능하다.
그러나 GraphQL은 하나의 URL로 처리하기에, HTTP에서 제공하는 캐싱 전략을 그대로 사용하는 것은 불가능하다.
2. 파일업로드가 안된다. GraphQL은 지속적으로 성장하는 생태계로써, 완성된 명세가 존재하지 않는다. 따라서 이 외의 것들은 직접 개발할 수 밖에 없게 된다.
3. GraphQL은 클라이언트가 필요한 데이터를 스스로 결정하여 요청하게 된다.
따라서 GraphQL의 다양한 요청형태에서 잘못된 요청을 필터링하기가 까다롭다.

참조 : http://www.incodom.kr/REST#h_1f13282977ee6e5449d32339492091ce
https://kotlinworld.com/330
https://owin2828.github.io/devlog/2020/11/12/GraphQL-1.html
https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

profile
머리 박고 개발공부중,,,

0개의 댓글