728x90
REST(Representational State Transfer) 정의
- HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 정보 전달 방식
- 자원 기반의 구조(ROA, Resource Oriented Architecture) 설계의 중심에 Resource가 있고 HTTP Method를 통해 Resource를 처리하도록 설계
CRUD Operation
CRUD | HTTP Method |
---|---|
Create | 생성(POST) |
Read | 조회(GET) |
Update | 수정(PUT) |
Delete | 삭제(DELETE) |
### **관련 용어** - REST API: REST를 기반으로 만들어진 API - RESTful: REST API를 활용하여 개발되는 서비스 -
REST의 구성
- 자원(Resource)
- 모든 자원에 고유한 ID가 존재 (Server에 존재)
- 자원을 구별하는 ID는 HTTP URI (예 : '/groups/:group_id')
- Client는 URI를 이용해서 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 Server에 요청
- 행위(Verb)
- HTTP 프로토콜의 Method 사용
- HTTP 프로토콜은 GET, POST, PUT, DELETE 와 같은 메서드 제공
- 표현(Representation)
- Client가 자원의 상태(정보)에 대한 조작을 요청하면 Server는 이에 적절한 응답(Representation)을 회신
- HATEOAS 개념을 통해 해당 자원에 대해 상태를 반영하여 표현
- REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태로 표현
- 일반적으로 JSON이나 XML 이용
HATEOAS(Hypermedia As The Engine Of Application State)
- Hypermedia를 Application의 상태를 관리하기 위한 매커니즘으로 사용
REST의 속성
- Server-Client
- Stateless(무상태)
- Cacheable(캐시 처리 가능)
- Layered System(계층화)
- Code-On-Demand(실행 코드 제공)
- 클라이언트의 기능을 일시적으로 확장하거나 커스트마이징 가능
- Java Applet, JavaScript, Flash 등이 Code On Demand의 예시
- 보안 취약점 발생
- Uniform Interface(인터페이스 일관성)
REST의 장단점
- 장점
- REST API 메시지를 통해 의도를 명확하게 파악 가능
- Stateless한 특징 때문에 수행 내용(Execution Context)이 독립적으로 진행
- HTTP 구성을 그대로 사용하기 때문에 별도의 인프라 구축 필요 없음
- 단점
- 표준이 존재하지 않음
- HTTP Method 형태가 제한적
728x90
반응형