REST (Representational State Transfer)
: 웹 상의 자료를 HTTP위에서 SOAP이나 쿠키를 통한 세션 트랙킹 같은 별도의 전송 계층 없이 전송하기 위한 아주 간단한 인터페이스
- URI로 요청을 보내 CRUD 연산을 수행하는것
URI 와 URL ?
URL (Unifirm Resource Locator) : 인터넷 상 자원(파일)의 위치
URI (Unifirm Resource Identifier) : 인터넷 상 자원을 식별하기 위한 문자열의 구성 URI보다 포괄적 범위
구성 요소
1. 자원(Resource) : HTTP URI
2. 자원에 대한 행위(Verd) : HTTP Method
3. 표현(Representations)
REST 아키텍처에 적용되는 6가지 제한 조건
1. 인터페이스 일관성 : 일관적인 인터페이스로 분리되어야 한다.
2. 무상태(Stateless) : 각 요청 간 클라이언트의 콘텍스트가 서버에 저장되어서는 안된다.
- 쿠키, 세션 같은 상태정보를 저장 및 관리하지않는다.
- 자유도가 높다 서버의 처리방식에 일관성을 부여하고 서버의 부담을 줄기위함
3. 캐시 처리 기능 : WWW에서와 같이 클라이언트는 응답을 캐싱할 수 있어야 한다.
- 잘 관리되는 캐싱은 클라이언트-서버 간 상호작용을 부부내적으로 또는 완전하게 제거하여 scalability와 성능을 향상시킨다.
4. 계층화(Layered System) : 클라이언트는 보통 대상 서버에 직접 연결되었는지, 또는 중간 서버를 통해 연결되었는지를 알 수 없다. 중간 서버는 로드 밸런싱 기능이나 공유 캐시 기능을 제공함으로써 시스템 규모 확장성을 향상시키는 데 유용하다.
5. Code on demand (optional) : 자바 애플릿이나 자바스크립트의 제공을 통해 서버가 클라이언트가 실행시킬 수 있는 로직을 전송하여 기능을 확장시킬 수 있다.
6. 클라이언트/서버 구조 : 아키텍처를 단순화시키고 작은 단위로 분리함으로써 클라이언트 - 서버의 각 파트가 독립적으로 개선될 수 있도록 해준다.
REST API 설계
1. URI는 동사보다는 명사를, 대문자보다는 소문자를 사용하여야한다.
2. 마지막에 슬래시(/)를 포함하지 않는다.
3. 언더바(_) 대신 하이픈(-)을 사용한다.
4. 파일확장자는 URI에 포함하지 않는다.
5. 행위를 포함하지 않는다.
- CRUD에 대한 내용을 URI에 포함하지 않아야 함