자원의 이름(HTTP URI)을 통해 자원을 구분하여 해당 자원의 상태를 주고 받는 기술
- 자원의 이름 : 고유한 ID인 HTTP URI를 사용
- 상태 전송 : HTTP Method를 통해 전송
자원의 표현 : JSON or XML 형식
● HTTP Method
1. GET : 조회(Read)
2. POST : 생성(Create)
3. PUT : 수정(Update) - 전체수정
PATCH :수정(Update) - 일부수정
4. DELETE : 삭제(Delete)
CRUD | HTTP Method | URI |
resource 리스트 표시 | GET | /resources |
resource 하나의 세부내용 표시 | GET | /resources/23 |
resource 생성 | POST | /resources |
resource 수정 | PUT | /resources/23 |
resource 삭제 | DELETE | /resources/23 |
● REST 특징 -> 웹 표준 HTTP 프로토콜을 그대로 사용하므로 기존의 인프라를 그대로 활용가능
1. Server-Client 구조
- 자원을 요청하는 쪽 : Client / 자원을 갖고 있는 쪽 : Server
2. Stateless (무상태)
- HTTP 프로토콜과 같이 무상태성임
- Client의 context를 Server에 저장하지 않는다.
- Server는 각 요청을 별개의 것으로 인식한다.
3. Cacheable (캐시 처리가능)
- HTTP 프로토콜의 캐싱 기능 사용
4. Layered System (계층화)
- Client는 REST API Server만 호출함
- REST Server는 다중 게층으로 구성 가능
5. Code-On-Demand
- Server로부터 스크립트를 받아 Client에서 실행
6. Uniform Interface (인터페이스 일관성)
- HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용 가능
REST API
- 도큐먼트 : 객체 인스턴스나 데이터 (단수명사)
- 컬렉션 : 서버에서 관리하는 디렉토리 (복수명사)
- 스토어 : 클라이언트에서 관리하는 디렉토리 (복수명사)
● 설계 규칙
1. URI는 명사, 소문자 사용 -> 동사사용 금지
2. URI에 HTTP Method가 포함되서는 안됨
3. URI에 _(언더스코어) 사용 금지, -(하이폰)은 가독성을 위해 사용 가능
4. 확장자 포함금지
5. URI는 복수명사/ID 가 표준 ex) products/1
6. URI 마지막에 /(슬래시)로 끝내지 않음