大韓民國의 힙합 音樂家에 對해서는
R-EST
文書를 參考하십시오.
다른 뜻에 對해서는
레스트
文書를 參考하십시오.
REST
(Representational State Transfer)는
월드 와이드 웹
과 같은 分散
하이퍼미디어
시스템을 위한
소프트웨어 아키텍처
의 한 形式이다. 이 用語는 로이 필딩(Roy Fielding)의 2000年 博士學位 論文에서 紹介되었다. 필딩은
HTTP
의 主要 著者 中 한 사람이다. 이 槪念은 네트워킹 文化에 널리 퍼졌다.
嚴格한 意味로
REST
는 네트워크 아키텍처 原理의 모음이다. 여기서 '네트워크 아키텍처 原理'란 資源을 定義하고 資源에 對한 住所를 指定하는 方法 全般을 일컫는다. 簡單한 意味로는, 웹 商議 資料를
HTTP
위에서
SOAP
이나 쿠키를 通한 세션 트랙킹 같은 別途의 電送 階層 없이 電送하기 위한 아주 簡單한 인터페이스를 말한다. 이 두 가지의 意味는 겹치는 部分과 衝突되는 部分이 있다. 필딩의
REST
아키텍처 形式을 따르면
HTTP
나
WWW
가 아닌 아주 커다란 소프트웨어 시스템을 設計하는 것도 可能하다. 또한,
리모트 프로시저 콜
代身에 簡單한
XML
과
HTTP
인터페이스를 利用해 設計하는 것도 可能하다.
필딩의
REST
原理를 따르는 시스템은 種種 RESTful이란 用語로 指稱된다. 熱情的인 REST 擁護者들은 스스로를 RESTafrians 이라고 부른다.
歷史
[
編輯
]
로이 필딩
(Roy Fielding)은 2000年에
UC 어바인
에서 "Architectural Styles and the Design of Network-based Software Architectures"라는 題目의 2000年 博士 學位 論文에 REST를 定義하였다.
[1]
그는 1996年부터 1999年까지 HTTP 1.0의 旣存 디자인에 基盤을 둔
HTTP
1.1와 竝行하여 REST 救助의 스타일을 開發하였다.
[2]
原理
[
編輯
]
REST 아키텍처에 適用되는 6가지 制限 條件
[
編輯
]
다음 制限 條件을 遵守하는 限 個別 컴포넌트는 자유롭게 具現할 수 있다.
- 인터페이스 一貫性 : 一貫的인 인터페이스로 分離되어야 한다
- 무狀態(Stateless)
: 各 要請 間 클라이언트의 콘텍스트가 서버에 貯藏되어서는 안 된다
- 캐시 處理 可能(Cacheable)
: WWW에서와 같이 클라이언트는 應答을 캐싱할 수 있어야 한다.
- 잘 管理되는 캐싱은 클라이언트-서버 間 相互作用을 部分的으로 또는 完全하게 除去하여 scalability와 性能을 向上시킨다.
- 階層化(Layered System)
: 클라이언트는 普通 對象 서버에 直接 連結되었는지, 또는 中間 서버를 통해 連結되었는지를 알 수 없다. 中間 서버는
로드 밸런싱
技能이나
共有 캐시
機能을 提供함으로써 시스템 規模 擴張性을 向上시키는 데 有用하다.
- Code on demand (optional)
- 자바 애플릿이나 자바스크립트의 提供을 통해 서버가 클라이언트가 實行시킬 수 있는 老職을 電送하여 機能을 擴張시킬 수 있다.
- 클라이언트/서버 救助
: 아키텍처를 單純化시키고 작은 單位로 分離(decouple)함으로써 클라이언트-서버의 各 파트가 獨立的으로 改善될 수 있도록 해준다..
REST 인터페이스의 原則에 對한 가이드
[
編輯
]
資源의 識別
[
編輯
]
要請 內에 記述된 個別 資源을 識別할 수 있어야 한다. 웹 基盤의 REST 시스템에서의
URI
의 使用을 例로 들 수 있다. 資源 그 自體는 클라이언트가 받는 文書와는 槪念的으로 分離되어 있다. 例를 들어, 서버는 데이터베이스 內部의 資料를 直接 電送하는 代身, 데이터베이스 레코드를 HTML, XML이나 JSON 等의 形式으로 電送한다.
메시지를 通한 리소스_ 造作
[
編輯
]
클라이언트가 어떤 資源을 指稱하는 메시지와 特定 메타데이터만 가지고 있다면 이것으로 서버 上의 該當 資源을 變更·削除할 수 있는 充分한 情報를 가지고 있는 것이다.
自己敍述的 메시지
[
編輯
]
各 메시지는 自身을 어떻게 處理해야 하는지에 對한 充分한 情報를 包含해야 한다. 例를 들어 MIME type과 같은 인터넷 미디어 타입을 傳達한다면, 그 메시지에는 어떤 파서를 利用해야 하는지에 對한 情報도 包含해야 한다. 미디어 타입만 가지고도, 클라이언트는 어떻게 그 內容을 處理해야할 지 알 수 있어야 한다. 메시지를 理解하기 위해 그 內容까지 살펴봐야 한다면, 그 메시지는 自己敍述的이 아니다. 例를 들어, 單純히 "application/xml"이라는 미디어 타입은, 實際 內容을 다운로드 받지 않으면 그 메시지만 가지고는 무엇을 해야할지에 對해 充分히 알려주지 못한다.
애플리케이션의 狀態에 對한 엔진으로서 하이퍼미디어
[
編輯
]
萬若에 클라이언트가 關聯된 리소스에 接近하기를 願한다면, 리턴되는 指示者에서 區別될 수 있어야 한다. 充分한 콘텍스트 속에서의 URI를 提供해주는 하이퍼텍스트 링크의 例를 들 수 있겠다.
REST 의 主要한 目標
[
編輯
]
- 構成 要素 相互作用의 規模 擴張性(scalability of component interactions)
- 인터페이스의 汎用性 (Generality of interfaces)
- 構成 要素의 獨立的인 配布(Independent deployment of components)
- 中間的 構成要素를 利用해 應答 遲延 減少, 保安을 强化, 레거시 시스템을 人캡슐레이션 (Intermediary components to reduce latency, enforce security and encapsulate legacy systems)
같이 보기
[
編輯
]
各州
[
編輯
]
- ↑
Fielding, Roy Thomas (2000).
〈Chapter 5: Representational State Transfer (REST)〉
. 《Architectural Styles and the Design of Network-based Software Architectures》 (Ph.D.). University of California, Irvine.
This chapter introduced the Representational State Transfer (REST) architectural style for distributed hypermedia systems. REST provides a set of architectural constraints that, when applied as a whole, emphasizes scalability of component interactions, generality of interfaces, independent deployment of components, and intermediary components to reduce interaction latency, enforce security, and encapsulate legacy systems.
- ↑
“Fielding discusses the development of the REST style”
. Tech.groups.yahoo.com. 2009年 11月 11日에
原本 文書
에서 保存된 文書
. 2014年 9月 14日에 確認함
.
外部 링크
[
編輯
]