REST

위키百科, 우리 모두의 百科事典.

REST (Representational State Transfer)는 월드 와이드 웹 과 같은 分散 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처 의 한 形式이다. 이 用語는 로이 필딩(Roy Fielding)의 2000年 博士學位 論文에서 紹介되었다. 필딩은 HTTP 의 主要 著者 中 한 사람이다. 이 槪念은 네트워킹 文化에 널리 퍼졌다.

嚴格한 意味로 REST 는 네트워크 아키텍처 原理의 모음이다. 여기서 '네트워크 아키텍처 原理'란 資源을 定義하고 資源에 對한 住所를 指定하는 方法 全般을 일컫는다. 簡單한 意味로는, 웹 商議 資料를 HTTP 위에서 SOAP 이나 쿠키를 通한 세션 트랙킹 같은 別途의 電送 階層 없이 電送하기 위한 아주 簡單한 인터페이스를 말한다. 이 두 가지의 意味는 겹치는 部分과 衝突되는 部分이 있다. 필딩의 REST 아키텍처 形式을 따르면 HTTP WWW 가 아닌 아주 커다란 소프트웨어 시스템을 設計하는 것도 可能하다. 또한, 리모트 프로시저 콜 代身에 簡單한 XML HTTP 인터페이스를 利用해 設計하는 것도 可能하다.

필딩의 REST 原理를 따르는 시스템은 種種 RESTful이란 用語로 指稱된다. 熱情的인 REST 擁護者들은 스스로를 RESTafrians 이라고 부른다.

歷史 [ 編輯 ]

OSCON 2008에서 演說 中인 로이 필딩.

로이 필딩 (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)

같이 보기 [ 編輯 ]

各州 [ 編輯 ]

  1. 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.  
  2. “Fielding discusses the development of the REST style” . Tech.groups.yahoo.com. 2009年 11月 11日에 原本 文書 에서 保存된 文書 . 2014年 9月 14日에 確認함 .  

外部 링크 [ 編輯 ]