REST(Representational State Transfer)

00SNU3K·2021년 8월 6일
0

RESTful 이란?

  • 웹의 장점을 최대한 활용할 수 있는 아키텍쳐

  • 최근의 서버 프로그램은 다양한 브라우저와 모바일 디바이스에서도 통신이 가능해야함.

  • HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.

  • 즉, REST는 자원 기반의 구조(ROA, Resource Oriented Architecture) 설계의 중심에 Resource가 있고 HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍쳐를 의미한다.

  • CRUD Operation 에는

    • Create : 생성(POST)
    • Read : 조회(GET)
    • Update : 수정(PUT)
    • Delete : 삭제(DELETE)
    • HEAD: header 정보 조회(HEAD) 이 있음

REST의 특징

1. Uniform Interface

  • Uniform Interface는 URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일

2. Stateless (무상태성)

  • 상태가 있다 없다의 의미는 사용자나 클라이언트의 context를 서버쪽에 유지하지 않는다를 의미.
  • HTTP와 동일하게 세션이나 쿠키등을 별도로 관리하지 않기 때문에 API서버는 요청만을 들어오는 메시지로만 처리, 구현이 단순.

3. Cacheable (캐시 처리 가능)

  • HTTP의 기존 웹표준을 그대로 사용.
  • HTTP가 가진 캐싱 기능 적용 가능, HTTP 프로토콜 표준에서 사용하는 Last-Modified태그나 E-Tag를 이용하면 캐시 구현 가능
    • 캐시를 사용해서 응답시간이 빨라짐.

4. Self-descriptiveness (자체 표현 구조)

  • REST API 메시지만 보고도 쉽게 이해 가능한 자체 표현 구조로 됨

5. Client – Server Architecture

  • REST Server는 API를 제공하고, 제공되 API를 이용해 비즈니스 로직 처리 및 저장을 책임짐.
    • Client는 사용자 인증, Context등을 직접 관리하고 책임짐.
      서로간의 의존성 줄어듬.

6. Layered System (계층형 구조)

  • Client 입장에서는 REST API 서버만 호출.
    • REST 서버는 다중계층으로 구성될수 있음.
    • 예를 들어, 보안/로드벨런싱/암호화/사용자 인증 등을 추가하여 구조상의 유연성을 줄수 있음.

REST 구성

1. 자원(Resource) - URI

  • 모든 자원에 고유한 ID가 존재, 자원은 Server에 존재.

    • 자원을 구별하는 ID는 ‘/gropus/:group_id’와 같은 HTTP URI다.
  • Client는 URI를 이용해서 자원을 지정하고 해당 자원의 정보에 대한 조작을 Server에 요청한다.

2. 행위(Verb) - HTTP Method (GET, PUT, POST, DELETE 등등)

3. 표현(Representations)

  • Client가 자원의 정보에 대한 조작을 요청하면 Server는 이에 적절한 응답(Representation)을 보낸다.

  • REST에서 하나의 자원은 JSON, XML, TEXT, RSS등 여러 형태의 Representation으로 나타내어 질수 있다.

  • JSON 또는 XML을 통해 데이터를 주고 받는 것이 일반적이다.

REST의 단점

  • 표준이 존재하지 않는다.

  • 사용할수 있는 Method가 4가지 밖에 없다.(HTTP Method형태 제한적)

  • 구형 브라우저가 아직 제대로 지원해주지 못한다. (PUT, DELETE, pushState 등)

profile
네트워크 전문가를 꿈꾸며

0개의 댓글