티스토리 뷰
REST(Representational State Transfer)?
REST(Representational State Transfer)는 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식으로 자원의 상태 전달을 위한 아주 간단한 인터페이스를 말한다.
REST 아키텍처에 적용되는 6가지 제한조건
다음 제한 조건을 준수하는 한 개별 컴포넌트는 자유롭게 구현할 수 있다고 한다.
- Client, Server: 클라이언트와 서버가 서로 독립적으로 분리되어 있어야 한다.
- Stateless: 요청에 대해서 클라이언트의 상태를 서버에 저장하지 않는다.
- Cache: 클라이언트는 서버의 응답을 임시저장할 수 있어야 하며 클라이언트가 cache를 통해 응답을 재사용할 수 있어야한다. 이를 통해 서버의 부하를 낮춘다.
- 계층화(Layered System): 서버와 클라이언트 사이에 방화벽, 게이트웨이, 프록시 등 다양한 계층 형태로 구성이 가능해야 하며, 이를 확장 할 수 있어야 한다.
- 인터페이스 일관성: 인터페이스의 일관성을 지키고 아키텍처를 단순화시켜 작은 단위로 분리하여 클라이언트, 서버가 독립적으로 개선 될수 있어야 한다.
- Code on Demand(Optional): 자바 애플릿, 자바스크립트, 플래시 등 특정한 기능을 서버로부터 전달받아 클라이언트가 코드를 실행 할수 있어야 한다.
REST 인터페이스 일관성을 위한 가이드
자원의 식별
웹 기반의 REST에서는 리소스 접근을 할때 URI를 사용한다.
https://example.com/user/123
Resource: user
식별자: 123
의미: 123번째 user
메시지를 통한 리소스 조작
웹에서는 HTML, XML, JSON, TEXT 등 다양한 방식으로 데이터를 전달할 수 있다. 이 중에서 어떠한 타입의 데이터인지를 알려주기 위해서 HTTP Header의 content-type을 통해서 데이터의 타입을 지정해 줄수 있다. 또한, 리소스 조작을 위해서 데이터 전체를 전달하지 않고, 메시지로 전달해야 한다.
ex) user의 정보에서 이름을 name으로 사용하다 서버에서 리소스를 변경하여 user-name이라고 했을때 클라이언트는 name으로 알고 있기 때문에 에러가 발생한다. 이를 방지하기 위해 서버와 클라이언트는 약속된 메시지 형태로 데이터를 주고받으면서 독립적 확장이 가능하도록 해야한다.
자기서술적
요청하는 데이터가 어떻게 처리 되어져야 하는지 충분한 데이터를 포함 할수 있어야 한다. HTTP기반의 REST에서는 HTTP Method와 Header정보 그리고 URI의 포함되는 정보로 표현 할수 있다.
GET : https://example.com/user/1 , 사용자의 정보 요청
POST : https://example.com/user , 사용자 정보 생성
PUT : https://example.com/user , 사용자 정보 수정
DELETE : https://example.com/user/1 , 사용자 정보 삭제
Application 상태에 대한 엔진으로써 하이퍼미디어
REST API를 개발할 때 단순히 Client 요청에 대한 데이터만 응답 해주는 것이 아닌 관련된
리소스에 대한 Link 정보까지 같이 포함 되어져야 한다.
반드시는 아니지만 위와 같은 조건이 충족되었을때 REST ful 하다고 표현하며, 이를 REST API라고 한다.
- Total
- Today
- Yesterday
- 인스턴스
- Context Switch
- websocket
- REST ful
- 운영체제
- java
- full duplex
- Dependency Injection
- 하이버네이트
- AWS
- 멀티프로세스
- Access Modifier
- GOF
- REST API
- react
- java persistence api
- os
- Adapter
- 웹소켓
- 인스턴스연결
- ORM
- 컴퓨터공학
- openssh
- 접근제어자
- 의존성 주입
- operating syatem
- ec2
- context switching
- observer
- 메신저
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |