GraphQL vs REST API

Lenny·2022년 6월 24일
0

GraphQL 과 REST API 의 차이점을 간략하게 알아보려고한다.

우선 API가 무엇인지, REST가 무엇인지 간단한 개념정리부터 드가자

API

API (Application Programing Interface)

API라는 말은 엄청 광범위하게 사용된다.

웹 API, 아마존 API, 브라우저 API, 영화 API 등등..

이렇게 광범위하게 쓰이기때문에 API가 콕 찝어서 어떤걸 의미하는지 이해하기가 어렵다.

우선 API 라는 단어에 I에 초점을 맞춰보자.

API의 I는 Interface(인터페이스) 이다.
인터페이스는 외부와 상호작용하는 방법을 의미한다.

예를들면 TV의 인터페이스는 뭘까?

TV의 인터페이스는 버튼이라고 할 수 있다.

왜냐면 버튼으로 티비를 끄고 켤 수 있으니깐. (리모콘이 될 수 도 있겠네)

여기서 버튼이 TV와 사용자와의 인터페이스가 되는것이다.

마찬가지로 우리가 자주 이용하는 웹사이트도 유저 인터페이스를 가지고있다.

UI는 우리가 웹사이트와 상호작용할 수 있게 해주잖아요?

그래서 User Interface 인거시다.

인터페이스들의 공통점은 우리 눈에 보이도록 노출이 되어있다는것이다.

브라우저 API도 비슷한 맥락이다.
브라우저를 하나의 큰 리모콘이라고 생각하고 Bettary API 라는 버튼을 눌렀다고하자.
우리는 이 버튼을 누름으로서 배터리와 관련된 정보를 받아볼 수 있는 것이다.

인터페이스는 이런 느낌인거시다.

즉 API라는 말은 어플리케이션과 상호작용 할 수 있는 수단 을 의미하는것이다!

카카오 API 등 웹 API도 개발자가 API를 이용함으로써 카카오에서 제공하는 정보들을 받아볼 수 있는 것처럼!

REST API

그러면 REST API는 무엇인가.

서로 다른 서버간의 통신이나 어플리케이션이 서버와 통신할 때 REST API를 사용한다면 그 통신은 URL을 통하여 이루어진다.

예를들어 우리가 흔히 한번쯤은 사용해보는 영화정보 API.

영화 정보들이 담긴 데이터베이스를 가진 서버가 있다. 우리는 그 영화 정보들을 얻기위해 URL로 Request를 보낸다.

그러면 JSON의 형태로 응답을 받는다.

이게 REST API다.

그리고 이런 REST API는 사용할 때 필요한 라이브러리나 도구를 따로 요구하지 않는다.
(API를 제공하는 홈페이지에서 주는 양식에 맞춰 URL에 Request 하기만 하면 된다.)

그래서 많이 사용하는것이다.

https://yts.mx/api/v2/list_movies.json

yts라는 홈페이지에서 제공하는 REST API이다. 클릭해보자.

그러면 여기서 제공하는 데이터들을 확인할 수 있다.

+ HTTP

REST API는 URL을 가지고 통신을 한다고 했었다.

그러나 오직 URL만을 통하여 API의 모든것을 해야하는건 아니다.

HTTP 메소드에 의존하는 방법도 있다.

HTTP 메소드와 REST API를 같이 활용하면 API가 더 많은것들을 할 수 있다.

URL 같아도 HTTP 메소드가 서로 다르면 다른 일을 하게 된다!

자주 쓰이는 HTTP 요청 메소드들 💡
GET: GET 메서드는 오직 데이터를 받기만 한다. (읽기전용)
POST: POST 메서드는 리소스를 생성할 때 쓰인다.
PUT: PUT 메서드는 리소스를 업데이트할 때 쓰인다.
DELETE: DELETE 메서드는 특정 리소스를 삭제한다.
PATCH: PATCH 메서드는 리소스의 부분만을 수정하는 데 쓰인다.
등등..

REST API를 설계할 때 주의할 점
1. URL에서는 가급적 동사를 사용하지 않는다.
(동사보다는 HTTP request method를 이용)
/seeMovies (GET) -> /movies (GET)
/createMovie (POST) -> /movies (POST)
2. 검색이나 필터를 처리할 때는 query parameter를 이용하는 것이 좋다.
/getTopRatedMovies -> /movies?min_rating=9
/findMoviesFromThisYear -> /movies?release_date=2022

GraphQL

  • GraphQL은 애플리케이션 프로그래밍 인터페이스(API)를 위한 쿼리 언어이자 서버측 런타임으로 클라이언트에게 요청한 만큼의 데이터를 제공하는 데 우선 순위를 둡니다.
  • GraphQL은 API를 더욱 빠르고 유연하며 개발자 친화적으로 만들기 위해 설계되었습니다.
  • GraphiQL이라고 하는 통합 개발 환경(Integrated Development Environment, IDE) 내에 배포될 수도 있습니다. REST를 대체할 수 있는 GraphQL은 개발자가 단일 API 호출로 다양한 데이터 소스에서 데이터를 끌어오는 요청을 구성할 수 있도록 지원합니다.
  • 또한 GraphQL은 API 유지 관리자에게 기존 쿼리에 영향을 미치지 않고 필드를 추가하거나 폐기할 수 있는 유연성을 부여합니다. 개발자는 자신이 선호하는 방식으로 API를 빌드할 수 있으며, GraphQL 사양은 이러한 API가 예측 가능한 방식으로 작동하도록 보장합니다.

https://graphql.org/

profile
🧑‍💻

0개의 댓글