REST 개요
2016년 8월 모던 PHP 유저 그룹 정기모임
업투데이트북스
이현석
REpresentational State Transfer
표현 상태 교환???
뭔소리여
출처: REST API의 이해와 설계-#1 개념 소개, 조대협의 블로그
REST는 웹의 창시자(HTTP) 중의 한 사람인 Roy Fielding의 2000년 논문에 의해서 소개되었다. 당시의 아키텍쳐가 웹의 본래 설계의 우수성을 많이 사용하지 못하고 있다고 판단했기 때문에, 웹의 장점을 최대한 활용할 수 있는 네트워크 기반의 아키텍쳐를 소개했는데 그것이 바로 Representational state transfer (REST)이다.
웹 설계의 우수성?
웹의 장점?
사실 PHP 익히는데도 바빠서 HTTP와 같은 웹기술에 대해 공부해본 적이 없네... 나만 그런가? ......
출처: Architectural Styles and the Design of Network-based Software Architectures, Roy Fielding, 2000
REST는
하이브리드 스타일이다
스타일
== 제약(constraint)
스타일 가이드를 생각해보세요
REST는 여러 네트워크 기반 소프트웨어 아키텍쳐 스타일을 짬뽕한 것에, 균일한 커넥터 인터페이스 스타일을 추가 짬뽕(hybrid)한 스타일.
어떤 아키텍처 스타일들을
짬뽕했는가?
- 클라이언트-서버 (Client-Server)
- 무상태 (Stateless)
- 캐쉬 (Cache)
- 주문형 코드 (Code On Demand)
- 계층 시스템 (Layered System)
- 균일한 인터페이스 (Uniform Interface)
어떻게 짬뽕했는가?
CS: Client/Server
S: Stateless
$: Cache
LS: Layered System
COD: Code On Demand
U: Uniform Interface
로이 필딩이 논문을 쓸 당시는 어떤 상황이었는가? (초기 웹 아키텍쳐)
C$SS
Client-Cache-Stateless-Server
이미 맨날 쓰고 있는거
웹서버, 프로토콜, 브라우저 등이 이미 다 구현해 둠
초기에 많이 쓰이던 웹 아키텍처 스타일에 로이 필딩이 추가한 아키텍쳐 스타일
클라이언트-서버 (Client-Server)무상태 (Stateless)캐쉬 (Cache)- 주문형 코드 (Code On Demand)
- 계층 시스템 (Layered System)
- 균일한 인터페이스 (Uniform Interface)
주문형 코드
Code On Demand, COD
- 스크립트나 플러그인 같은 실행 가능한 프로그램을 일시적으로 클라이언트에 전송하여, 클라이언트가 실행할 수 있도록 하는거
- 자바스크립트, 플래시 ...
- 이것도 이미 매일 쓰고 있는거
- 브라우저가 알아서 처리하고 있음
계층 시스템
Layered System, LS
- 이것도 아마 다들 사용하고 있는거
- 서버 1대로 모든 걸 처리하고 있지 않다면 당신은 이미 계층 시스템의 사용자
- 로드밸런서라던가, 이미지서버라던가, DB서버라던가..
균일한 인터페이스
Uniform Interfaces, U
결국 웹 개발자로서 RESTful 웹 서비스를 만들 때 신경 쓸 부분은 이것
균일한 인터페이스를 위한 네가지 인터페이스 제약
- 자원 식별 (Identification of resources)
- URI, URL
- 표현을 통한 자원 처리 (Manipulation of resources through representations)
- HTTP 메시지(verb, URI)
- 자기서술적 메시지 (Self-descriptive message)
- 의미있는 URL, HTTP 메타데이타(헤더) 활용
- 애플리케이션 상태 엔진으로서의 하이퍼미디어 (Hypermedia as the engine of application state)
- HTML이 아니어도 링크 걸어줘
균일한 인터페이스
만드는 방법
은 다음 시간에 김주원님께서 발표해주실 겁니다
정리
- REST는 Layered-CodeOnDemand-Client-Cache-Stateless-Server + Uniform Interface 임
- LCODC$SS 는 이미 우리가 사용하는 도구들이 다 구현해 두었고, 우리도 익히 사용하고 있는 중
- RESTful 한 웹 애플리케이션을 작성하기 위해 우리가 신경써야 할 것은 Uniform Interface
- Uniform Interface 는 자원 식별, 표현을 통한 자원 조작, 자기서술적 메시지, 애플리케이션 상태 엔진으로서의 하이퍼미디어라는 인터페이스 제약을 충족시킴으로써 가능
감사합니다
업투데이트북스
이현석
이메일 smartbosslee@gmail.com
미디엄 http://medium.com/@smartbosslee
블로그 http://leehyunseok.com
페이스북 http://facebook.com/leehs
REST 개요
By Hyun-Seok Lee
REST 개요
2016년 8월 모던 PHP 유저 그룹 정기모임 발표용
- 1,986