본문 바로가기

Web Application/Spring boot

[spring] Spring Boot를 이용하여 RESTful API 개발(1) - REST, RESTful API에 대한 설명 및 REST의 제약조건과 장점

728x90
반응형
SMALL

REST 란

REST의 정의

  ① Representational State Transfer 약어로 자원(resource) 이름으로 구분하여 자원의 상태를 주고받는 것을 의미한다.

  ② 웹 아키텍처의 일부로서, 분산 하이퍼미디어 시스템을 위한 아키텍처 스타일이다.

 

REST API  REST 아키텍처의 제약 조건을 지키는 애플리케이션 프로그래밍 인터페이스를 뜻한다.

 

RESTful API 역시 REST 아키텍처의 제약조건을 따르는 API를 말하며, 어떤 의미에서는 동일한 개념이지만 RESTful API는 보다 일반적으로 REST 아키텍처의 제약조건(원칙)을 더 엄격하게 따른다.

(* REST API RESTful API보다  엄격한 의미로 사용되며, RESTful API REST API 하위 집합이라고 생각할  있다.)

 


REST 아키텍처의 제약조건(원칙)

  ① 클라이언트 - 서버 아키텍처 :

       - 클라이언트는 서버로 자원을 요청하면, 서버는 클라이언트에게 응답 메시지를 전달한다. 이렇듯 클라이언트와 서버를 분리하여 서로 간의 의존성을 낮춰 독립적으로 개발할 수 있다.

 

  ② 무상태(Stateless) 아키텍처 : 

       - 각 요청은 서버가 이전 요청이나 클라이언트 상태를 기억하지 않는 완전히 독립적인 작업으로, 서버의 부하를 줄이고 확장성을 높힐 수 있다.

 

  ③ 캐시 가능(Cacheable) 아키텍처 :

       - 서버는 응답에 대한 캐시 가능 여부를 명시하여 클라이언트는 캐시된 자원을 사용하여 다시 요청하지 않아도 된다.

 

  ④ 계층화(Layered) 아키텍처 :

       - 클라이언트가 서버와 직접 통신하지 않고 중간 계층의 서버를 통해 통신할 수 있도록 하기 때문에 서버는 보안, 로드밸런싱 등을 수행할 수 있다.

 

  ⑤ Code on demand(optional) 아키텍처 :

       - 서버가 네트워크를 통해 클라이언트에 전달한 javascript 등과 같은 프로그램들은  자체로 실행이   있어야 한다.

 

  ⑥ 일관성 있는 인터페이스(Uniform Interface) :

       - 통일된 인터페이스를 가지고 있어, 자원을 고유하게 식별하고 자원의 상태를 조작하기 위한 표준 연산을 제공한다. 이러한 인터페이스는 서버와 클라이언트를 독립적으로 개발하고, 상호 운용성을 보장한다.

 

위의 REST 원칙을 따르는 API RESTful API라고 부르며,

RESTful API 이러한 원칙을 따르면서 확장성과 유지보수성이 뛰어난 API 만들  있다.


REST API 의 장점

  ① 확장성 :

       - REST는 클라이언트-서버간의 상호 작용을 최적화하기 때문에 효율적으로 크기를 조정할 수 있다.

또한, 무상태는 서버가 과거 클라이언트 요청 정보를 유지할 필요가 없기 때문에 서버 로드를 제거하고, 잘 관리된 캐싱은 일부 클라이언트 - 서버간의 상호 작용을 부분적 또는 완전히 제거한다.

 

이러한 모든 기능은 성능을 저하시키는 병목 현상을 일으키지 않기 때문에 REST API는 확장성을 지원한다.

 

  ② 독립성 : 

       - REST API는 API 설계에 영향을 주지 않고 다양한 프로그래밍 언어로 클라이언트 - 서버 애플리케이션을 모두 작성할 수 있으며, 통신에 영향을 주지 않고 양쪽의 기본 기술을 변경할 수 있어 독립적이다.

 

  ③ 유연성 :

       - REST API는 클라이언트-서버 간의 완전한 분리를 지원하기 때문에 각 부분이 독립적으로 발전할 수 있도록 다양한 서버 구성 요소를 단훈화 할 수 있다. 

또한, 서버 애플리케이션의 플랫폼이나 사용하는 기술 변경은 클라이언트에 영향을 주지 않기 때문에 애플리케이션 로직을 다시 작성하지 않아도 된다. 

728x90
반응형
LIST