"Representational State Transfer"의 약자, 자원을 이름으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다.
HTTP URL을 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.
REST API 정의
출처: https://www.bacancytechnology.com/blog/rest-api-best-practices
REST API의 주요 구성요소:
고객 — 통신을 시작하는 사용자 측(자신의 장치에서)에서 시작된 클라이언트 또는 프로그램.
섬기는 사람 — API를 기능 및 데이터에 대한 액세스로 사용하는 서버.
자원 — 서버가 클라이언트에 전송하는 모든 콘텐츠(비디오, 텍스트, 사진).
출처:https://velog.io/@ellyheetov/REST-API
CRUD Operation
총 5개의 API를 만들어야 한다.
REST API의 특징
사내시스템들도 REST기반으로 시스템을 분산해 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있다.
REST는 HTTP표준을 기반으로 구현하므로, HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있다.
REST API 설계 기본 규칙
REST API 설계 규칙
슬래시 구분자( / )는 계층 관계를 나타내는데 사용한다.
URL 마지막 문자로 슬래시 ( / )를 포함하지 않는다.
하이픈( - )은 URL 가독성을 높이는데 사용한다.
밑줄( _ )은 URL에 사용하지 않는다.
URL 경로에는 소문자가 적합하다.
파일확장자는 URL에 포함하지 않는다.
리소스 간에는 연관 관계가 있는경우
- /리소스명/리소스ID/관계가 있는 다른 리소스명
RESTful은 일반적으로 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어이다.
RESTful은 REST를 REST답게 쓰기 위한 방법으로, 누군가가 공식적으로 발표한 것이 아니다.
이해하기 쉽고 사용하기 쉬운 REST API를 만드는것
RESTful한 API를 구현하는 근본적인 목적이 성능 향상에 있는건 아니라 컨벤션을 통한 API의 이해도 및 호환성을 높이는 것이 주 동기이다.
CRUD 기능을 모두 POST로만 처리하는 API
route에 resource,id 외의 정보가 들어가는 경우
GraphQL이란?
GraphQL은 Facebook에서 만든 Graph Query Language로 어플리케이션 레이어 쿼리 언어이다.
웹 클라이언트가 데이터를 서버로 부터 효울적으로 가져오는 것이 목적이다.
타입 시스템을 사용하여 쿼리르 실행하는 서버사이드 런타임이다.
특정한 데이터베이스나 스토리지에 귀속 되어 있지 않으며, 기존 코드와 데이터에 의해 대체된다.
GraphQL 장점
GraphQL 정리
GraphQL은 REST API의 한계점을 해결하고자 나온 API를 위한 쿼리 언어
GraphQL은 웹 클라이언트가 데이터를 서버로 부터 효울적으로 가져오는 것이 목적이고 클라이언트가 필요한 데이터만 반환할 수 있다.