왁타버스 고정멤버 오리지널 곡에 대한 내용은 REST(왁타버스) 문서
, 일반적인 의미에 대한 내용은
휴식
문서
참고하십시오.1. 개요
REST(Representational State Transfer)는 분산 시스템을 설계하기 위한 소프트웨어 아키텍처 스타일로, 특히 HTTP 프로토콜을 기반으로 한 웹 서비스 설계에서 주로 사용된다. REST는 클라이언트와 서버 간 통신에서 리소스의 상태와 표현(Representation)을 전송한다는 개념에서 이름이 유래되었다.REST는 2000년, 로이 필딩(Roy Fielding)의 박사 논문에서 처음으로 제안되었다. 로이 필딩은 HTTP와 URI 설계에 깊이 관여한 개발자로, REST는 그의 논문에서 웹의 확장성과 상호운용성을 극대화하기 위해 정의된 아키텍처 스타일이다. 이 개념은 특히 웹의 발전과 HTTP 프로토콜 표준화 과정에서 큰 영향을 미쳤다.
REST의 주요 목적은 시스템 간 상호운용성을 높이고, 단순하면서도 확장 가능한 웹 애플리케이션 설계를 지원하는 데 있다.
2. 원칙
REST는 분산 시스템 설계를 위해 다음과 같은 6가지 제약 조건을 기반으로 한다. 이 제약 조건들은 REST 아키텍처 스타일을 정의하며, 이를 준수해야 진정한 RESTful 시스템이라 할 수 있다.- 클라이언트-서버 구조: 클라이언트와 서버를 명확히 분리하여 각자의 역할에 집중할 수 있도록 한다.
- 상태 비저장성 (Stateless): 서버는 클라이언트의 상태 정보를 저장하지 않는다. 각 요청은 독립적으로 처리되어야 하며, 필요한 모든 정보는 요청에 포함되어야 한다.
- 캐시 가능성 (Cacheability): 서버 응답이 캐시될 수 있어야 하며, 클라이언트는 이를 활용하여 네트워크 트래픽과 서버 부하를 줄일 수 있다.
- 계층화 시스템 (Layered System): 클라이언트와 서버 간에 여러 계층을 둘 수 있으며, 각 계층은 독립적으로 동작한다.
- 인터페이스 일관성 (Uniform Interface): REST 시스템은 일관된 인터페이스를 제공해야 하며, 이를 통해 리소스와 상호작용할 수 있어야 한다.
- 주문형 코드 (Code on Demand): 필요에 따라 서버가 클라이언트에 코드를 전송하여 실행할 수 있다. 예: JavaScript, 플러그인 등.
3. 용도
- Web server applications
- Client-side (JavaScript) applications
- Applications on limited-input devices
- Service accounts
4. 구성 요소
4.1. 자원(Resource)
나무위키에서 몇 가지를 예로 들자면,URI | 의미 |
https://namu.wiki/w/A | A 문서 조회 |
https://namu.wiki/history/A | A 문서의 변경 기록 조회 |
https://namu.wiki/backlink/A | A 문서의 역링크 조회 |
https://namu.wiki/edit/A | A 문서 수정 |
https://namu.wiki/move/A | A 문서의 표제어 수정 |
https://namu.wiki/delete/A | A 문서 삭제 |
여기서 /는 계층 관계를 나타낸다.
4.2. 메서드(Method)
HTTP 메서드를 사용한다.POST | 자원 생성(Create) |
GET | 자원 조회(Read) |
PUT | 자원 수정(Update) |
DELETE | 자원 삭제(Delete) |