REST

From CS Wiki
(Redirected from RESTful)
Representational State Transfer

HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 정보 전달 방식

  • Roy Fielding 박사학위 논문에서 제안

용어[edit | edit source]

  • REST API: REST를 기반으로 만들어진 API
  • RESTful: REST API를 활용하여 개발되는 서비스

SOAP과의 비교[edit | edit source]

REST는 기존 공식 표준인 SOAP을 넘어서 사실상 표준이 됨
구분 SOAP RESTful
사용 프로토콜 HTTP HTTP
주안점 동작과 프로세싱에 집중 데이터 처리에 집중
표현 방식 주로 XML 주로 JSON

REST의 구성[edit | edit source]

구성 설명
자원

(Resource)

  • 모든 자원에 고유한 ID가 존재하고, 이 자원은 Server에 존재
  • 자원을 구별하는 ID는 '/groups/:group_id'와 같은 HTTP URI
  • Client는 URI를 이용해서 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 Server에 요청
행위

(Verb)

  • HTTP 프로토콜의 Method 사용
  • HTTP 프로토콜은 GET, POST, PUT, DELETE 와 같은 메서드 제공
표현

(Representation)

  • Client가 자원의 상태(정보)에 대한 조작을 요청하면 Server는 이에 적절한 응답(Representation)을 회신
  • REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태로 표현
  • 일반적으로 JSON이나 XML 이용

REST의 속성[edit | edit source]

  • Server-Client
  • Stateless(무상태)
  • Cacheable(캐시 처리 가능)
  • Layered System(계층화)
  • Code-On-Demand(실행 코드 제공)
    • 클라이언트의 기능을 일시적으로 확장하거나 커스트마이징 가능
    • Java Applet, JavaScript, Flash 등이 Code On Demand의 예시
    • 보안 취약점 발생
  • Uniform Interface(인터페이스 일관성)