CS 간단정리 - [4] REST & RESTful

Dongwoo Kim·2022년 9월 13일
0

CS 간단정리

목록 보기
4/6

1. REST & RESTful

REpresentational State Transfer


클라이언트와 서버가 데이터를 주고 받는 방식에 대한 균일한 인터페이스를 설명하는 아키텍처 스타일

REST에는 기본적인 6가지 원칙이 있고 이 원칙을 충족한 서비스 인터페이스를 RESTful하다고 표현한다.


2. REST의 기본 원칙

1) Uniform Interface (균일한 인터페이스)

균일한 인터페이스는 아키텍쳐에 대한 구조를 단순화시키고 가시성을 높힐 수 있다.

균일한 인터페이스를 달성하기위한 4가지 제약 조건

1-1) Identification of resources


인터페이스는 클라이언트와 서버 간의 상호 작용에 관련된 각 리소스를 고유하게 식별해야 한다.

1-2) Manipulation of resources through representations


리소스는 서버 응답에서 균일한 표현을 가져야 한다. API 이용자는 이러한 표현을 사용하여 서버의 리소스 상태를 수정해야 한다.

1-3) Self-descriptive messages


각 리소스 표현에는 처리 방법을 설명하기에 충분한 정보가 포함되어야 한다. 또한 클라이언트가 리소스에 대해 수행할 수 있는 추가 작업에 대한 정보도 제공해야 한다.

1-4) Hypermedia as the engine of application state


클라이언트는 애플리케이션의 초기 URI만 가질 수 있다. 클라이언트 애플리케이션은 하이퍼링크를 사용하여 다른 모든 리소스와 상호 작용을 동적으로 구동해야 한다.


2) Client-Server (클라이언트-서버)

클라이언트-서버는 관심사를 분리하여 구성요소가 독립적으로 개발할 수 있도록한다. 이를 통해

  • 사용자 인터페이스(클라이언트)의 여러 플렛폼에서의 이식성
  • 데이터(서버)의 구성요소 단순화 & 확장성

을 얻을 수 있다.


3) Stateless (무상태성)

클라이언트에서 서버로의 각 요청에는 요청을 이해하고 완료하는 데 필요한 모든 정보가 포함되어야 한다.

서버는 컨텍스트에 대한 어떠한 정보도 가지고 있지 않으며, 때문에 클라이언트는 세션 상태를 온전히 유지하고 있어야한다.


4) Cacheable (캐시 가능)

서버는 클라이언트 요청에 대한 응답에 캐싱 가능 여부를 포함시켜야한다.

만약 캐싱이 가능하다면 클라이언트는 해당 요청에 대한 응답 데이터를 재사용할 수 있다.


5) Layered System (계층화 시스템)

구성 요소 동작을 제한하여 아키텍처를 계층적으로 구성할 수 있다.


6) Code on Demand (Optional)

서버는 클라이언트에 전달되는 기능의 일부를 코드 형태로 제공할 수 있다.

클라이언트는 코드를 실행하여 미리 구현해야 하는 기능의 수를 줄여 클라이언트를 단순화시킬 수 있다.



참고)

profile
kimphysicsman

0개의 댓글