Rest-api vs Graphql-api

이샘미·2022년 5월 24일
0

sulmyoung

목록 보기
7/37

두 기능의 공통점?인 api란 :
application programing interface로 서로 다른 응용 프로그램 간의 상호작용 및 통신을 허용하는 기능과 규칙을 제공하는 것.
요청과 응답을 통해 app사이를 중재함.

GraphQL에서는 API서버에서 한번의 요청으로 정확히 가져오고 싶은 데이터를 가져올 수 있게 도와주는 쿼리를 보낼수 있다. 예를 들어, user에 대한 몇 가지의 간단한 데이터가 필요할 때, 필요한 만큼의 user 정보를 최적화하여 가져올 수 있습니다.

차이점 :

  • R = REST / G = GraphQL
    R에서는 Resource에 대한 형태 정의와 데이터 요청 방법이 연결되어 있지만, G에서는 Resource에 대한 형태 정의와 데이터 요청이 완전히 분리되어 있음
    R에서는 Resource의 크기와 형태를 서버에서 결정하지만, G에서는 Resource에 대한 정보만 정의하고, 필요한 크기와 형태는 client단에서 요청 시 결정함
    R에서는 URI가 Resource를 나타내고 Method가 작업의 유형을 나타내지만, G에서는 G Schema가 Resource를 나타내고 Query, Mutation 타입이 작업의 유형을 나타냄
    R에서는 여러 Resource에 접근하고자 할 때 여러 번의 요청이 필요하지만, G에서는 한번의 요청에서 여러 Resource에 접근할 수 있음
    R에서 각 요청은 해당 엔드포인트에 정의된 핸들링 함수를 호출하여 작업을 처리하지만, G에서는 요청 받은 각 필드에 대한 resolver를 호출하여 작업을 처리함
    G에서는 GraphQL introspection이, R API 에서는 Swagger가 문서화를 진행함.

GraphQL or RESTful?

GraphQL 과 RESTful 중 선택을 해야한다면 아래와 같은 기준으로 선택하면 됨

GraphQL :서로 다른 모양의 다양한 요청들에 대해 응답할 수 있어야 할 때
         대부분의 요청이 CRUD(Create-Read-Update-Delete) 에 해당할 때
RESTful: HTTP 와 HTTPs 에 의한 Caching 을 잘 사용하고 싶을 때
        File 전송 등 단순한 Text 로 처리되지 않는 요청들이 있을 때
        요청의 구조가 정해져 있을 때

형태 비교

REST :
{ "title": "Romance of the Three Kingdoms",
"author": {
"firstName": "Luo",
"lastName": "Guanzhong"}
}

GraphQL // 타입 정의 필요
type Book {
id: ID
title: String
author: Author
}

주석 :
https://hwasurr.io/api/rest-graphql-differences/
https://appmaster.io/ko/blog/rest-apiran-mueosimyeo-dareun-yuhyeonggwa-eoddeohge-dareungayo

profile
가즈아

0개의 댓글