Rest-API vs GraphQL-API

이재홍·2022년 1월 23일
0

Rest-API vs GraphQL

REST란 무엇인가?

  • “Representational State Transfer” 의 약자
    • 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다.
    • 즉, 자원(resource)의 표현(representation) 에 의한 상태 전달
      • 자원(resource)의 표현(representation)
        • 자원: 해당 소프트웨어가 관리하는 모든 것
          -> Ex) 문서, 그림, 데이터, 해당 소프트웨어 자체 등
          자원의 표현: 그 자원을 표현하기 위한 이름
          -> Ex) DB의 학생 정보가 자원일 때, ‘students’를 자원의 표현으로 정한다.
      • 상태(정보) 전달
        • 데이터가 요청되어지는 시점에서 자원의 상태(정보)를 전달한다.
        • JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이다.
    • 월드 와이드 웹(www)과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍처의 한 형식
      • REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다.
      • REST는 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나이다.

API란 무엇인가?

Application Programming Interface의 약자로 구글 맵 API, 카카오 비전 API 등 기존에 있는 응용 프로그램을 통해서 데이터를 제공받거나 기능을 사용하고자 할 때 사용하는 인터페이스 및 규격 을 말한다. API는 프로그래밍 언어, 운영체제 등에서도 사용되는 범용적인 용어이다. 따라서, REST API라는 것은 REST 원칙을 적용하여 서비스 API를 설계한 것을 말하며 대부분의 서비스가 REST API를 제공한다.

Rest-API의 단점을 보완하기 위해 페이스북에서 만든
GraphQL은 Rest-API를 사용하지만 쿼리를 사용해 원하는 데이터만 받아올 수 있습니다.

요청rest-APIgraphql-API
네이버에서 1번 게시글 조회https://naver.com/board/1board(1)
네이버에서 철수 프로필 조회https://naver.com/profile/철수profile("철수")
요청담당axiosapollo-client
응답서버expressapollo-server


GraphQL은 단순히 Query Language를 말하기에 사용하기 위해서는
보통 Apollo-ClientApollo-Server를 이용합니다.

Apollo-Server

Apollo-Server에서는 typeDefs에 gql과 Tagged Template Literals를 이용해
Object Input Query Mutation으로 스키마를 정의해 문서화 할 수 있고

resolvers로 스키마에 해당하는 실제 구현을 하는 곳으로 요청을 받아 데이터를 조회, 수정, 삭제합니다.

0개의 댓글