티스토리 뷰

개발직설/기타

Rest API

SdardewValley 2021. 12. 14. 18:01
반응형

REST는 Representational State Transfer의 약자로 아키텍처 스타일이다. 아키텍처 스타일은 반복되는 문제 상황을 해결하는 도구이다. 이와 유사한 말로 아키텍처 패턴이 있는데 이는 반복되는 아키텍처 디자인을 의미한다. REST는 웹 서비스에서 자주 사용되는 HTTP 위에서 느슨하게 결합되는 애플리케이션 설계를 위한 스타일이다.

 

 

REST 제약 조건

REST 아키텍처는 6가지 제약조건으로 구성된다.

 

1. Uniform Interface

2. Client-Server

3. Stateless

4. Casheable

5. Layered System

6. Code on demand (선택)

 

이 제약조건을 따르는 API를 RESTful API라고 한다.

 

Uniform Interface

인터페이스는 일관적이여야 한다. 리소스에는 하나의 논리적인 URI만 존재해야 한다. 어떤 리소스에 접근하는데 2개 이상의 URI를 통해 접근할 수 있다면 일관적인 인터페이스가 아니다. 

 

Client-Server

서버는 리소스를 관리하고, 클라이언트는 이 리소스을 사용하기 위에 서버에 접근한다. Client-Server 디자인 패턴에서 사용자 인터페이스 문제(클라이언트) 데이터 스토리지 문제(서버)가 분리되어 있다. 이렇게 관심사를 분리하여 각각 확장성이 개선된다.

 

Stateless

HTTP는 상태가 없는 프로토콜이라고 표현한다. Stateless는 클라이언트가 서버에 요청을 보냈을 때, 그 이전의 요청의 영향을 받지 않는 것이다. 로그인 같은 경우에는 세션 혹은 쿠키 정보로 로그인 상태를 유지할 수 있다. 

 

Casheable

서버에서 받은 응답이 캐시가 가능한지 아닌지로 명시할 수 있어야 한다. HTTP 프로토콜에서는 이를 cache-control이라는 헤더에 명시한다.

 

Layered System

계층화된 시스템을 사용하여 구성 요소의 동작을 제한한다. 이런 계층적 구조로 시스템의 확장성이 향상된다.  클라이언트는 레이어의 유무를 알 수 없다.

 

Code on demand

이 제약은 선택 사항이다. REST는 코드를 다운로드 받고 실행하여 클라이언트의 기능을 확장할 수 있다. 이렇게 다운 받은 코드로 미리 구현해야 하는 기능의 수가 감소하고 클라이언트는 단순화 된다.

 

💡 REST는 HTTP와 같은 것이 아니다. REST는 아키텍처이고, HTTP는 프로토콜이다.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함