RESTful 이란?

Author Avatar
Jong-Ho Jeong Aug 16, 2016

RESTful 이란?

MEAN스택으로 구현된 훌륭한 소스를 찾았는데, RESTful한 구조로 되어있었다. 코드를 살펴보면서 기본 구조인 RESTful에 대해서 공부하는 것이 코드를 이해하는데 도움이 될거라고 생각했다.

RESTful은 지금 웹환경에서 필수적으로 알아야 할 용어인것 같다. 모든 서비스 아키텍처가 반드시 Restful해야 하는것은 아니지만 분명 어떤 서비스에는 좋은 선택이 된다.


REST(REpresentational State Transfer)는 웹과 같은 환경을 설계하는 데있어서 아키텍쳐의 종류이다. 그 전까지의 웹 환경이 설계의 장점을 잘 살리지 못하고 있다고 판단한 Roy Fielding(http 저자중 한명)이 2000년 논문에서 소개했다. 하지만 최근들어(사실 이제 최근도 아니다) 클라이언트의 다양성이 증가하면서 주목받고 있다.

이 전의 아키텍쳐에서는 클라이언트가 요청을 보낼 때 주로 POST method를 사용했다. 예를 들면

POST/url?method=create
POST/url?method=insert
GET/url?method=update

다음과 같은 URI구성은 REST라고 볼 수 없다. http method는 여러가지 종류가 있다. RESTful한 설계는 목적에 맞는 method를 적절히 사용한다.

RESTful의 특징

RESTful에는 크게 여섯가지 특징이 있다.

  • Client-Server
    RESTful의 가장 기본적이면서 당연한 특징으로, 클라이언트는 적절한 요청을 보내고 서버는 REST하게 클라이언트가 필요한 리소스를 제공한다는 것이다.
  • Uniform interface(Platform Agnostic)
    REST하게 설계되어있으면 플랫폼에 관계없이 사용할 수 있다. 운영체제에도 구애받지 않고 언어에도 구애받지 않는다. HTTP를 준수하는 플랫폼이라면
    어디에서나 사용할 수 있다.
  • Stateless
    state, 즉 상태를 서버에 저장하지 않는다. 서버는 요청만 처리할 뿐 따로 클라이언트의 컨텍스트를 저장하지 않는다. 따라서 세션의 사용을 지양하게된다.
    서버의 리소스사용이 줄어들고 구현을 단순화 할 수 있다.
  • Cacheable
    http표준을 사용하기 때문에 웹캐시를 사용할 수 있다. 리소스를 캐싱해서 서버의 트랜잭션을 줄일 수 있다.
  • Layered System
    서버와 클라이언트간에 미들웨어를 사용할 수 있다. 미들웨어는 요청과 응답을 방해하지 않는 선에서 서버와 클라이언트간에 유연성을 가지게 할 수 있다.
  • Self-descriptiveness
    RESTful의 가장 큰 특징이자 주목받게 된 이유이다. RESTful은 그 자체로 기술되어진다. 요청만 보고도 어떤 일을 하는지 파악할 수 있다.
    직관적이어서 사람이 이해하기 쉽고 semantic하다.

참고사이트
https://beyondj2ee.wordpress.com
http://bcho.tistory.com/953
http://www.guru99.com/restful-web-services.html