최근 수정 시각 : 2025-01-17 14:23:49

REST

레스트에서 넘어옴


파일:나무위키+유도.png  
은(는) 여기로 연결됩니다.
왁타버스 고정멤버 오리지널 곡에 대한 내용은 REST(왁타버스) 문서
번 문단을
부분을
, 일반적인 의미에 대한 내용은 휴식 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
참고하십시오.

1. 개요2. 원칙3. 용도4. 구성 요소
4.1. 자원(Resource)4.2. 메서드(Method)4.3. 메시지(Message)

1. 개요

REST(Representational State Transfer)는 분산 시스템을 설계하기 위한 소프트웨어 아키텍처 스타일로, 특히 HTTP 프로토콜을 기반으로 한 웹 서비스 설계에서 주로 사용된다. REST는 클라이언트와 서버 간 통신에서 리소스의 상태와 표현(Representation)을 전송한다는 개념에서 이름이 유래되었다.

REST는 2000년, 로이 필딩(Roy Fielding)의 박사 논문에서 처음으로 제안되었다. 로이 필딩은 HTTP와 URI 설계에 깊이 관여한 개발자로, REST는 그의 논문에서 웹의 확장성과 상호운용성을 극대화하기 위해 정의된 아키텍처 스타일이다. 이 개념은 특히 웹의 발전과 HTTP 프로토콜 표준화 과정에서 큰 영향을 미쳤다.

REST의 주요 목적은 시스템 간 상호운용성을 높이고, 단순하면서도 확장 가능한 웹 애플리케이션 설계를 지원하는 데 있다.

2. 원칙

REST는 분산 시스템 설계를 위해 다음과 같은 6가지 제약 조건을 기반으로 한다. 이 제약 조건들은 REST 아키텍처 스타일을 정의하며, 이를 준수해야 진정한 RESTful 시스템이라 할 수 있다.
  1. 클라이언트-서버 구조: 클라이언트와 서버를 명확히 분리하여 각자의 역할에 집중할 수 있도록 한다.
  2. 상태 비저장성 (Stateless): 서버는 클라이언트의 상태 정보를 저장하지 않는다. 각 요청은 독립적으로 처리되어야 하며, 필요한 모든 정보는 요청에 포함되어야 한다.
  3. 캐시 가능성 (Cacheability): 서버 응답이 캐시될 수 있어야 하며, 클라이언트는 이를 활용하여 네트워크 트래픽과 서버 부하를 줄일 수 있다.
  4. 계층화 시스템 (Layered System): 클라이언트와 서버 간에 여러 계층을 둘 수 있으며, 각 계층은 독립적으로 동작한다.
  5. 인터페이스 일관성 (Uniform Interface): REST 시스템은 일관된 인터페이스를 제공해야 하며, 이를 통해 리소스와 상호작용할 수 있어야 한다.
  6. 주문형 코드 (Code on Demand): 필요에 따라 서버가 클라이언트에 코드를 전송하여 실행할 수 있다. 예: JavaScript, 플러그인 등.

3. 용도

  1. Web server applications
  2. Client-side (JavaScript) applications
  3. Applications on limited-input devices
  4. 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)

4.3. 메시지(Message)

파일:상세 내용 아이콘.svg   자세한 내용은 HTTP/응답 코드 문서
번 문단을
부분을
참고하십시오.