본문 바로가기

Spring

Rest

반응형

REST는 'Representational State Transfer'의 약어로 하나의 URI는 하나의 고유한 리소스를 대표하도록 설계된다는 개념에 전송방식을 결합해서 원하는 작업을 지정한다.따라서  REST방식은 다음과 같이 구성된다고 생각할수 있습니다. 

따라서

  •  
  •  REST는 Representational State Transfer 약자로 웹의 장점을 최대한 활용활 수 있는 아키텍처 이다.

 

REST와 관련해서 알아 두어야 하는 어노테이션들은 다음과 같습니다.

 

 

 

  • REST 방식에서 가장 먼저 기억해야 하는점은 서버에서 전송하는 것이 순수한 데이터라는 점입니다. 기존의 Contrller에서Model에 데이터를 담아서 JSP등과 같은 뷰(View)로 전달하는 방식이 아니므로 기존의 Controller와는 조금 다르게 동작합니다.  @Controller 외에 @RestController라는 어노테이션을 추가해서 해당 Controller의 모든 메서드의 리턴 타입을 기존과 다르게 처리한다는 것을 명시합니다. @RestController 이전에는 Controller와 메서드 선언부에 @ResponseBody를 이용해서 동일한 결과를 만들수 있습니다. @RestController는 메서드의 리턴 타입으로 사용자가 정의한 클래스 타입을 사용할 수 있고, 이를 JSON이나 XML로 자동으로 처리할 수 있습니다.

Rest 방식의 데이터 교환에서 가장 특이한 점은 기존의  GET/POST 외에 다양한 방식으로 데이터를 전달한다는 점입니다. HTTP의 전송방식은 아래와 같은 형태로 사용됩니다.

 

작업

전송방식

Create

POST

Read

GET

UPDATE

PUT

DELETE

DELETE

 

REST 방식은 URI와 같이 결합하므로 회원(member)이라는 자원을 대상으로 전송방식을 결합하면 다음과 같은 형태가 됩니다.

작업

전송방식

URI

등록

POST

/members/new

조회

GET

/members/{id}

수정

PUT

/members/{id} + body(json데이터등)

삭제

DELETE

/members/{id}

 

 

 

1. Client-Server

  • 사용자의 요청과 데이터의 저장을 분리하기 위해서 클라이언트-서버 모델 사용
  • 서버의 각 컴포넌트는 클라이언트와 독립적으로 구성되어 확장이 용이

2. Stateless

  • 클라이언트와 서버 사이는 client-stateless-server(CSS) 스타일로 무상태 통신
  • 클라이언트의 각 요청은 필요한 모든 정보를 포함해야 하며, 서버에 컨텍스트에 대한 어떠한 정보도 포함할 수 없음

3. Cache

  • 성능 향상을 위해 캐시 추가
  • 캐시 사용에 대한 유무는 요청에 설정에 따라 결정되며, 캐시가 가능할 경우 클라이언트는 응답 데이터를 캐시로부터 사용 가능

4. Uniform Interface

  • 다른 네트워크 기반의 스타일과 REST 아키텍처 스타일의 가장 큰 차이점은 일관된(uniform) 인터페이스 제공을 강조
  • 어떤 인터페이스의 형식이 때로는 비효율적이더라도 REST는 일관된 형태의 인터페이스를 제공

5. Layered System

  • 계층화된 시스템은 각 계층 내에서 컴포넌트의 동작을 제한하여 해당 계층 이외에서 어떻게 상호작용되는지 볼 수 없음
  • 단일 계층에 정보가 제한되어 전체 시스템 복잡도가 높아져도 단일 계층은 복잡도가 높아지지 않음
  • 단점으로는 응답이오기까지의 시간이 오래걸릴 수 있음

6. Code-On-Demand

  • REST는 애플릿이나 스크립트 코드를 다운로드하고 실행하여 클라이언트 기능 확장 가능
  • 이는 미리 구현되어야 하는 기능의 수를 줄임으로써 복잡도를 줄임
  • 배포 후 기능을 다운로드 하도록 허용하면 시스템 확장성이 향상

REST 응답의 역할

  • 처음 웹의 자원은 WWW(World Wide Web)에서 URL로 식별되는 문서 또는 파일로 정의
  • 오늘날의 자원은 웹 상에서 어떤 식으로든 식별, 명명, 주소 지정 또는 처리될 수 있는 포괄적이고 추상적인 의미로 사용
  • RESTful 웹 서비스에서 리소스 URI의 요청은 HTML, XML, JSON 또는 기타 페이로드 포맷으로 지정된 응답 생성
  • 응답은 저장된 자원의 변경을 확인하고, 다른 자원으로 하이퍼텍스트 링크를 제공하는 등의 기능 가능

 

 

출처

https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm#sec_5_1

https://en.wikipedia.org/wiki/Representational_state_transfer

 

 

반응형

'Spring' 카테고리의 다른 글

@PathVariable(스프링 지향)  (0) 2020.12.01
SprtingSecurity(메뉴 권한 및 WebIgnore 설정)  (0) 2020.11.14
Oracle 연동  (0) 2020.11.09
Aop 패러다임  (0) 2020.11.09
MVC구조  (0) 2020.10.31