REST API
★ REST ?
- Representational State Transfer
- 분산하이퍼미디어 시스템 아키텍처의 한 형식
- 자원에 이름을 규정하고 URI에 명시해 HTTP 메서드를 통해 해당 자원의 상태를 주고받는 것
★ REST API ?
- REST 아키텍처를 따르는 시스템/애플리케이션 인터페이스
- REST 아키텍처를 구현하는 웹 서비스를 'RESTful하다'라고 표현
★ REST 특징
⭐︎ 유니폼 인터페이스
- 일관된 인터페이스
- HTTP 표쥰 전송 규약을 따르기 때문에 어떤 프로그래밍 언어로 만들어졌느냐와 상관없이 타 언어, 플랫폼, 기술 등과 호환해 사용할 수 있음
⭐︎ 무상태성(Stateless)
- 서버에 상태 정보를 따로 보관하거나 관리하지 않는다는 의미
- 서버는 클라이트가 보낸 요청에 대해 세션이나 쿠키 정보를 보관하지 않고 개별적으로 처리
- 서버가 불필요한 정보를 관리하지 않으므로 비즈니스 로직의 자유도가 높고 설계가 단순
⭐︎ 캐시 가능성
- HTTP 표준을 그대로 사용하므로 HTTP의 캐싱 기능을 적용할 수 있음
- 응답과 요청이 모두 캐싱 가능한지 명시가 필요하며, 캐싱이 가능한 경우 클라이언트에서 캐시에 저장해두고 같은 요청에 대해서는 해당 데이터를 가져다 사용
- 서버의 트랜잭션 부하가 줄어 효율적이며 성능이 개선
⭐︎ 레이어 시스템
- 네트워크 상의 여러 계층으로 구성될 수 있음
⭐︎ 클라이언트-서버 아키텍처
- REST 서버는 API를 제공하고 클라이언트는 사용자 정보를 관리하는 구조로 분리해 설계
- 의존성을 낮추는 기능을 함
★ REST의 URI 설계 규칙
- UIR의 마지막에는 '/'를 표함하지 않는다
http://localhost.com/product (O)
http://localhost.com/product/ (X)
- 언더바(_)는 사용하지 않고 하이픈(-)을 사용 (하이픈은 리소스 이름이 길어지면 사용)
http://localhost.com/provider-company (O)
http://localhost.com/provicer_company (X)
- URL에는 행위(동사)가 아닌 결과(명사)를 포함
http://localhost.com/product/123 (O)
http://localhost.com/delete-product/123 (X)
- URI는 소문자로 작성 (일부 웹 서버의 운영체제는 리소스 경로의 대소문자를 다른 문자로 인식하기 때문)
- 파일의 확장자는 URI에 포함하지 않음