DevGang

[WEB] REST 본문

Study/WEB

[WEB] REST

별천랑 2021. 2. 17. 16:21

- REST(Representational State Transfer, 자원의 상태 전달)

  • Resource(자원)의 Representation에 의한 상태 전달
  • HTTP Method를 통해 Resource를 처리하기 위한 아키텍처
  • Client, Server : 클라이언트와 서버가 독립적으로 분리되어 있어야 한다.
  • Stateless : 요청에 대해서 클라이언트의 상태가 서버에 저장을 하지 않는다.
  • 캐시 : 클라이언트는 서버의 응답을 캐시 할 수 있어야 한다. 클라이언트가 캐시를 통해서 응답을 재사용할 수 있어야 하며, 이를 통해서 서버의 부하를 낮춘다.
  • 계층화(Layered System) : 서버와 클라이언트 사이에, 방화벽, 게이트웨이, Proxy 등 다계층 형태를 구성할 수 있어야 하며, 확장할 수 있어야 한다.
  • 인터페이스 일관성 : 아키텍처를 단순화시키고 작은 단위로 분리하여서, 클라이언트, 서버가 독립적으로 개선될 수 있어야 한다.
  • Code On Demand (optional) : 자바 애플릿, 자바스크립트 플래시 등 특정 기능을 서버가 클라이언트에 코드를 전달하여 실행할 수 있어야 한다.

- 인터페이스의 일관성

1. 자원 식별

  • 웹 기반의 REST에서는 리소스 접근을 URI를 사용한다.
  • https://foo.co.kr/user/100
  • resource : user
  • 식별자 : 100

2. 메시지를 통한 리소스 조작

  • Web에서는 다양한 방식으로 데이터를 전송할 수 있습니다. 그중에는 HTML, XML, JSON, TEXT 등 다양한 방법이 있습니다. 이 중에서 리소스의 타입을 알려주기 위해서 header 부분에 content-type을 통해 어떠한 타입인지를 지정할 수 있습니다.

3. 자기 서술적 메시지

  • 요청하는 데이터가 어떻게 처리되어야 하는지 충분한 데이터를 포함할 수 있어야 합니다.
  • HTTP 기반의 REST에서는 HTTP Method(get, post, put 등)와 Header의 정보로 이를 표현할 수 있습니다.

4. 애플리케이션 상태에 대한 엔진으로써 하이퍼미디어

  • REST API를 개발할 때에도 단순히 Client 요청에 대한 데이터만 내리는 것이 아닌 관련된 리소스에 대한 Link 정보까지 같이 포함되어야 한다.

이러한 조건들을 잘 갖춘 경우 REST Ful 하다고 말하고 이를 REST API라고 부릅니다.

 

'Study > WEB' 카테고리의 다른 글

[WEB] WS(Web Server) vs WAS(Web Application Server)  (0) 2021.07.14
[WEB] HTTP  (0) 2021.06.08
[WEB] SOAP(Simple Object Access Protocol)  (0) 2021.06.01
[WEB] XML, JSON  (0) 2021.04.11
[WEB] URI  (0) 2021.02.17
Comments