API란?
- 애플리케이션 프로그래밍 인터페이스는 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의한다
REST란?
- Representational State Transfer는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처
- 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미
- 'HTTP URI(Uniform Resource Identifier)'를 통해 자원(Resource)을 명시하고 'HTTP Method(POST, GET, PUT, DELETE, PATCH 등)'를 통해 해당 자원(URI)에 대한 'CRUD Operation'을 적용
REST의 구성
- 자원(resource) - URI
- 서버에 존재하는 데이터의 총칭
- 모든 자원은 고유의 URI(URL)을 가지며 클라이언트는 이 URI를 지정하여 해당 자원에 대해 CRUD 명령을 수행할 수 있다.
- 행위(verb) - HTTP method
- 클라이언트가 HTTP Method(GET, POST, PUT, DELETE)를 이용하여 자원을 조작하는 것
- 표현(Representations)
- 서버의 행위(verb)에 대한 응답(Json, XML)
사용 이유
- 가독성이 좋다
- 클라이언트와 서버를 완전히 분리할 수 있다
- 특정 데이터를 명확히 표현할 수 있다
self-descriptive message
- REST 하려면 메세지가 스스로 자신을 설명할 수 있어야 한다
RESTful의 목적
- 이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것
- 일관적인 컨벤션을 통한 API의 이해도 및 호환성을 높이는 것이 주된 동기