1. RESTful API 란?
REST란 REpresentational State Trasfer의 약어로 웹을 이용할 때 제약 조건들을 정의하는 소프트웨어 아키텍처 스타일입니다. HTTP URL을 통해 자원(Resource)를 명시하고 HTTP Method(GET, POST, PUT, DELETE) 를 통해서 해당 자원(URL) 에 대한 (CRUD)를 적용하는 것을 의미합니다. 한마디로 HTTP의 장점을 살리고자 하는 통신 규약이라고 할수 있습니다. 로이 필딩(Roy Fielding)의 2000년 박사학위 논문에서 소개되었으며 RESTful API 는 이러한 규약을 바탕으로 리소스 중심으로 설계하고 기능에 맞게 HTTP Method 사용하여 설계된 API입니다.
- GET : 지정된 URL에서 리소스의 표현을 조회
- POST : 지정된 URL에 신규 리소스를 생성
- PUT : 지정된 URL에 리소스를 생성하거나 업데이트
- PATCH : 리소스의 부분 업데이트
- DELETE : 지정된 URL의 리소스를 제거
2. REST 특징
<REST 아키텍처에 적용되는 6가지 제한 조건>
- 인터페이스 일관성 : 일관적인 인터페이스로 분리되어야 합니다.
- 무상태 : 각 요청 간 클라이언트의 context, 세션과 같은 상태 정보를 서버에 저장하지 않습니다.
- 캐시 처리 가능 : 클라이언트는 응답을 캐싱할 수 있어야 합니다. 캐시를 통해 대량의 요청을 효율적으로 처리할 수 있습니다.
- 계층화 : 클라이언트는 대상 서버에 직접 연결되어있는지, Proxy를 통해서 연결되었는지 알수 없습니다.
- Code on demand : 자바 애플릿이나 자바스크립트의 제공을 통해 서버가 클라이언트를 실행시킬 수 있는 로직을 전송하여 기능을 확장시킬 수 있습니다.
- 클라이언트/서버 구조 : 아키텍처를 단순화시키고 작은단위로 분리함으로써 클라이언트-서버의 각 파트가 독립적으로 구분하고 서로 간의 의존성을 줄입니다.
3. REST 구성요소
REST 는 다음과 같은 3 가지로 구성되어 있습니다.
- 자원(Resource) : HTTP URL
- 자원에 대한 행위 : HTTP Method
- 자원에 대한 표현 (Representations)
4. REST API 설계 Rulse 및 예시
- 소문자를 사용한다
- 언더바 ( _ ) 대신 하이픈( - ) 을 사용한다.
- 마지막에 슬래쉬를 포함하지 않는다 ( / )
- 행위를 포함하지 않는다 (GET, POST) 등등
- 파일 확장자는 URL에 포함시키지 않는다
- 자원에는 형용사, 동사가 아닌 명사를 사용하며, 컨트롤 자원을 의미하는 경우 예외적으로 동사를 사용한다.