Representational state transfer API
- 웹에서 데이터를 전송 및 처리하는 방법을 정의한 인터페이스
- 자원(Resource) - URI / 행위(Verb) - HTTP METHOD / 표현(Representations) 으로 구성
URI는 식별하고, URL은 위치를 가르킨다.
Uniform Interface : URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일.
Stateless (무상태성) : 작업을 위한 상태정보를 별도로 저장, 관리하지 않음. API 서버는 단순히 들어오는 요청만 처리.
Cacheable (캐시 가능) : 기존 웹표준을 그대로 사용하기 때문에 HTTP가 가진 캐싱 기능 적용 가능
Self-descriptiveness (자체 표현 구조) : REST API 메시지만 보고도 쉽게 이해 할 수 있는 자체 표현 구조로 되어 있음.
Client - Server 구조 : REST 서버는 API 제공, 클라이언트는 사용자 인증이나 컨텍스트(세션, 로그인 정보)등을 직접 관리하는 구조.
계층형 구조 : 다중 계층으로 구성될 수 있으며 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있음.
200
: 클라이언트 요청이 정상 수행된 경우 (응답에 대한 메시지가 포함)
201
: 리소스 생성 요청이 정상 처리된 경우
202
: 리소스 생성 요청이 비동기적으로 처리된 경우
204
: 클라이언트 요청 정상 수행 (응답에 대한 메시지 미포함, 보통 삭제요청에 사용)
400
: 클라이언트 요청이 부적절한 경우 (부적절한 이유를 응답 Body에 넣어야 함)
401
: 클라이언트가 인증되지 않은 상태에서 보호된 리소스를 요청한 경우
403
: 클라이언트가 인증상태와 무관하게 응답하고 싶지 않은 리소스를 요청한 경우 (400
사용 권장)
404
: 클라이언트가 요청한 리소스가 존재하지 않는 경우
405
: 클라이언트가 불가능한 메소드를 사용한 경우