API Test2020. 9. 5. 08:00

REST는 Representation State Transfer를 의미합니다. 

REST는 Roy Fielding 이 제시 한 일련의 제약 조건입니다.

이러한 제약은 모든 이론적 논의에서 이해하기 어렵다는 것을 알 수 있습니다. 

 

REST 제약(Constrains)

1) 클라이언트 – 서버 아키텍처 스타일(Client – Server Architecture style)

이것은 REST 아키텍처 스타일의 첫 번째 제약 조건입니다.

이 제약에 따라 애플리케이션은 클라이언트 – 서버처럼 모델링 되어야 합니다.

이와 관련하여 애플리케이션에는 데이터와 별도의 UI가 있어야 합니다.

프런트 엔드 (UI)와 백 엔드 (데이터베이스)를 처리하는 별개의 구성 요소가 있어야 합니다.

클라이언트-서버 아키텍처에 대한 이전 장에서 UI는 클라이언트 역할을 하고 백엔드는 서버가 됩니다.

이 디자인 스타일의 중요성은 클라이언트 및 서버 구성 요소가 독립적으로 발전할 수 있다는 것입니다. 

또한 가장 중요한 부분은 서버가 여러 클라이언트에 서비스를 제공할 수 있고 클라이언트가 다른 기술(techologies)을 사용할 수 있다는 것입니다.

 

2) 무상태(Stateless;상태 유지하지 않음)

이것은 REST 아키텍처 스타일의 두 번째 제약입니다.

이 제약에 따라 서버는 클라이언트의 콘텍스트를 저장하지 않아야 합니다.

클라이언트가 보낸 각 요청은 동일한 클라이언트가 이전에 요청한 정보 (콘텍스트)로 처리되어서는 안 됩니다.

이 제약 조건의 중요성은 이로 인해 서버 구현이 단순 해졌다는 것입니다.

이제 클라이언트의 참조를 저장할 필요가 없습니다.

또한 클라이언트의 모든 요청에는 요청을 처리하는 데 필요한 모든 정보가 포함되어야 합니다.

 

3) 캐시(Cache)

이것은 REST 아키텍처 스타일의 세 번째 제약입니다.이 제약 조건에 따르면 서버의 응답에는 응답이 클라이언트에 의해 캐시 될 수 있는지 여부를 알려주는 관련 정보가 포함되어야 합니다.일반적으로 이것은 응답의 헤더 항목을 통해 수행됩니다.

이 제약은 클라이언트가 서버에 요청할 필요가 없는 캐시 가능한 응답에 대해 클라이언트 효율성을 향상합니다.클라이언트는 단순히 응답을 위해 캐시를 조사할 수 있습니다. 이렇게하면 네트워크 대역폭과 클라이언트 처리 능력이 절약됩니다.

앞으로 나올 튜토리얼에서 REST 에 대해 자세히 알아볼 때 이를 자세히 살펴볼 것입니다.

 

4) 일관된 인터페이스(Uniform Interface)

일관된 인터페이스 제약은 모든 REST 서비스 설계의 기본입니다.

일관된 인터페이스는 아키텍처를 단순화하고 분리하여 각 부분이 독립적으로 발전할 수 있도록 합니다.

이 인터페이스의 네 가지 기본 원칙은 다음과 같습니다.

 

  • 자원 식별(Identification of resources)
  • 이러한 표현을 통한 자원 조작
  • 자기 설명 메시지(Self-descriptive messages)
  • 애플리케이션 상태의 엔진으로써의 하이퍼 미디어 (일명 HATEOAS)

 

5) 계층화 시스템

이것은 REST 아키텍처 스타일의 다섯 번째 제약 조건입니다.

이 제약에 따라 시스템 구현은 계층화되어야 합니다.

각 계층은 전체 시스템의 특정 기능을 추상화합니다. 

레이어는 직접 상호 작용하는 레이어 외에 다른 레이어의 존재를 알면 안 됩니다.

계층화된 소프트웨어 설계는 REST 영역 밖에서도 일반적인 관행입니다.

이 제약은 시스템 내 여러 구성 요소의 전반적인 복잡성을 감소시킵니다. 

상대적으로 작고 논리적으로 응집된 기능을 다루어야 하므로 레이어를 구현하는 것이 더 쉬워집니다.

 

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

이것은 RESTful 아키텍처가 부과하는 선택적 제약입니다.

이 제약에 따라 클라이언트는 서버에서 코드를 다운로드하여 기능을 확장할 수 있습니다.

이 코드는 애플릿 또는 스크립트의 형태로 제공될 수 있습니다. 

Javascript는 주문형 코드가 클라이언트가 기능을 확장하는 데 도움이 되는 방법의 한 예입니다.

서버가 클라이언트에게 코드를 보내는 기능으로 인해 보안 문제가 발생합니다.

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
Posted by 프리스케이터