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-API | graphql-API |
---|---|---|
네이버에서 1번 게시글 조회 | https://naver.com/board/1 | board(1) |
네이버에서 철수 프로필 조회 | https://naver.com/profile/철수 | profile("철수") |
요청담당 | axios | apollo-client |
응답서버 | express | apollo-server |
GraphQL
은 단순히 Query Language를 말하기에 사용하기 위해서는
보통 Apollo-Client
와 Apollo-Server
를 이용합니다.
Apollo-Server에서는 typeDefs
에 gql과 Tagged Template Literals를 이용해
Object
Input
Query
Mutation
으로 스키마를 정의해 문서화 할 수 있고
resolvers
로 스키마에 해당하는 실제 구현을 하는 곳으로 요청을 받아 데이터를 조회, 수정, 삭제합니다.