나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2025-02-12 02:19:02

REST


파일:다른 뜻 아이콘.svg  
#!if 넘어옴1 != null
''''''{{{#!if 넘어옴2 != null
, ''''''}}}{{{#!if 넘어옴3 != null
, ''''''}}}{{{#!if 넘어옴4 != null
, ''''''}}}{{{#!if 넘어옴5 != null
, ''''''}}}{{{#!if 넘어옴6 != null
, ''''''}}}{{{#!if 넘어옴7 != null
, ''''''}}}{{{#!if 넘어옴8 != null
, ''''''}}}{{{#!if 넘어옴9 != null
, ''''''}}}{{{#!if 넘어옴10 != null
, ''''''}}}은(는) 여기로 연결됩니다. 
#!if 설명 == null && 리스트 == null
{{{#!if 설명1 == null
다른 뜻에 대한 내용은 아래 문서를}}}{{{#!if 설명1 != null
{{{#!html 왁타버스 고정멤버 오리지널 곡}}}에 대한 내용은 [[REST(왁타버스)]] 문서{{{#!if (문단1 == null) == (앵커1 == null)
를}}}{{{#!if 문단1 != null & 앵커1 == null
의 [[REST(왁타버스)#s-|]]번 문단을}}}{{{#!if 문단1 == null & 앵커1 != null
의 [[REST(왁타버스)#|]] 부분을}}}}}}{{{#!if 설명2 != null
, {{{#!html 일반적인 의미}}}에 대한 내용은 [[휴식]] 문서{{{#!if (문단2 == null) == (앵커2 == null)
를}}}{{{#!if 문단2 != null & 앵커2 == null
의 [[휴식#s-|]]번 문단을}}}{{{#!if 문단2 == null & 앵커2 != null
의 [[휴식#|]] 부분을}}}}}}{{{#!if 설명3 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단3 == null) == (앵커3 == null)
를}}}{{{#!if 문단3 != null & 앵커3 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단3 == null & 앵커3 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명4 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단4 == null) == (앵커4 == null)
를}}}{{{#!if 문단4 != null & 앵커4 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단4 == null & 앵커4 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명5 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단5 == null) == (앵커5 == null)
를}}}{{{#!if 문단5 != null & 앵커5 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단5 == null & 앵커5 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명6 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단6 == null) == (앵커6 == null)
를}}}{{{#!if 문단6 != null & 앵커6 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단6 == null & 앵커6 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명7 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단7 == null) == (앵커7 == null)
를}}}{{{#!if 문단7 != null & 앵커7 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단7 == null & 앵커7 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명8 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단8 == null) == (앵커8 == null)
를}}}{{{#!if 문단8 != null & 앵커8 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단8 == null & 앵커8 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명9 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단9 == null) == (앵커9 == null)
를}}}{{{#!if 문단9 != null & 앵커9 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단9 == null & 앵커9 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명10 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단10 == null) == (앵커10 == null)
를}}}{{{#!if 문단10 != null & 앵커10 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단10 == null & 앵커10 != null
의 [[#|]] 부분을}}}}}}
#!if 설명 == null
{{{#!if 리스트 != null
다른 뜻에 대한 내용은 아래 문서를}}} 참고하십시오.

#!if 리스트 != null
{{{#!if 문서명1 != null
 * {{{#!if 설명1 != null
왁타버스 고정멤버 오리지널 곡: }}}[[REST(왁타버스)]] {{{#!if 문단1 != null & 앵커1 == null
문서의 [[REST(왁타버스)#s-|]]번 문단}}}{{{#!if 문단1 == null & 앵커1 != null
문서의 [[REST(왁타버스)#|]] 부분}}}}}}{{{#!if 문서명2 != null
 * {{{#!if 설명2 != null
일반적인 의미: }}}[[휴식]] {{{#!if 문단2 != null & 앵커2 == null
문서의 [[휴식#s-|]]번 문단}}}{{{#!if 문단2 == null & 앵커2 != null
문서의 [[휴식#|]] 부분}}}}}}{{{#!if 문서명3 != null
 * {{{#!if 설명3 != null
: }}}[[]] {{{#!if 문단3 != null & 앵커3 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단3 == null & 앵커3 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명4 != null
 * {{{#!if 설명4 != null
: }}}[[]] {{{#!if 문단4 != null & 앵커4 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단4 == null & 앵커4 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명5 != null
 * {{{#!if 설명5 != null
: }}}[[]] {{{#!if 문단5 != null & 앵커5 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단5 == null & 앵커5 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명6 != null
 * {{{#!if 설명6 != null
: }}}[[]] {{{#!if 문단6 != null & 앵커6 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단6 == null & 앵커6 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명7 != null
 * {{{#!if 설명7 != null
: }}}[[]] {{{#!if 문단7 != null & 앵커7 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단7 == null & 앵커7 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명8 != null
 * {{{#!if 설명8 != null
: }}}[[]] {{{#!if 문단8 != null & 앵커8 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단8 == null & 앵커8 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명9 != null
 * {{{#!if 설명9 != null
: }}}[[]] {{{#!if 문단9 != null & 앵커9 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단9 == null & 앵커9 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명10 != null
 * {{{#!if 설명10 != null
: }}}[[]] {{{#!if 문단10 != null & 앵커10 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단10 == null & 앵커10 != null
문서의 [[#|]] 부분}}}}}}


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/응답 코드 문서
#!if (문단 == null) == (앵커 == null)
를
#!if 문단 != null & 앵커 == null
의 [[HTTP/응답 코드#s-|]]번 문단을
#!if 문단 == null & 앵커 != null
의 [[HTTP/응답 코드#|]][[HTTP/응답 코드#|]] 부분을
참고하십시오.