REST

From CS Wiki
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(인터페이스 일관성)