개발자가 되고 싶은 개발자

[WEB] REST 이해하기 본문

Dev/CS

[WEB] REST 이해하기

Fullth 2021. 1. 11. 16:20

질문이 왔을때 정확히 설명할 수 없어 정리해본다.

 

먼저, 인식을 위해 사전에서 단어의 뜻을 찾아보았다.

REST: Representational State Transfer, 표현· 상태· 전이

(단어의 뜻만으로는 이해가 안간다.)

 

로이 필딩 (Roy Fielding)에 의해 소개된 S/W 아키텍처

 

이 분이 정의한 아키텍처(REST)의 제약조건을 만족하는 것을 RESTful 하다고, REST스럽다고 할 수 있다. 

 

REST의 제약조건은 다음과 같다.

 

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

2. 무상태(Stateless)

3. 캐시(Cache)

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

5. 계층 시스템(layerd System)

6. 주문형 코드(Code-on-demand)

 

1. 사용자 인터페이스 관심과 데이터 스토리지 관심을 분리하여, 여러 플랫폼에서 사용자 인터페이스의 이식성을 개선하고 서버 구성 요소를 단순화하여 확장 성을 개선한다.

2. 클라이언트가 서버에 요청할때는 요청에 필요한 모든 정보가 담겨있어야 함, 서버에 저장된 컨텍스트를 이용할 수 없음.

따라서 세션 상태는 전적으로 클라이언트에 유지됨.

3. 네트워크 효율성을 높히기 위해 캐시가 가능해야 함. 요청에 대한 응답 데이터 안에는 캐시가 가능한지 불가능한지 알 수 있어야 한다.

4. 구성요소 사이의 인터페이스는 균일해야 한다.

5. 계층적으로 구성이 가능해야 한다.

6. (선택적) 클라이언트에게 실행가능한 프로그램을 전송하여 실행할 수 있도록 해아 한다.

 

참조: Architectural Styles and the Design of Network-based Software Architectures

www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm 

'Dev > CS' 카테고리의 다른 글

[Design Pattern] Singleton Pattern  (0) 2023.03.13
[DataStructure] Queue  (0) 2021.11.23
[Web] REST  (0) 2021.03.07