Rianshin

RESTful? 본문

Develop

RESTful?

RianShin 2016. 8. 5. 17:12
728x90
반응형
SMALL



  • RESTful 이란?
    • 정의 
      • REST는 ROA를 따르는 웹 서비스 디자인 표준이다.
                              -ROA : Resource Oriented Architecture
    • 주요특징
      • 무분별한 파라미터의 남발이 아니라, 오브젝트 맴버변수만을 따라가는 듯한 URI를 가진다.
                              - 기존 : http://www.iamcorean.net/finduser.jsp?user=mk&age=32
                              - Rest : http://www.iamcorean.net/user/mk/age/32
      • RESTful방식의 웹서비스는 세션을 쓰지 않는다.
                              - 기존 서비스 개발에서는 세션을 이요하여 인증정보 및 파라미터를 가지고 다녀 요청처리가 무거워지는 단점이 있음.
                              - 또한, 요청간의 전후 관련성이 생기기 때문에 한 세션의 일련의 요청은 무조건 하나의 서버가 처리해야 함.
                                   (이는 로드발란싱을 위해 고가의 로드발란싱 서버가 필요하게 됨.)
                              - REST는 세션을 사용하지 않아 각각의 요청이 독립적이다.
                              - 이는 각각의 요청은 이전 요청과는 무고나하게 처리되므로, 로드발란싱이 간단해 진다.
                              - 단, 인증 관려에 관해선 복잡해질수 있다.

    • RESTful 웹 서비스 속성
      • Addressablilty (주소로 표현 가능함)
 - 제공하는 모든 정보를 URI로 표시할 수 있어야 한다.
 - 직접 URI로 접근할 수 없고 HyperLink를 따라서만 해당 리소스에 접근할 수 있다면 이는 RESTful하지 않은 웹서비스이다.
 - 예를 들면, GMail은 모든 메일 리소스는 하나의 URI와 연결되어 있다. (http://mail.google.com/mail/?hl=ko#sent/1036854d04d6de9e)
하지만 코리아닷컴의 경우에는 http://mbox07.korea.com/mail/mailView.crd 라는 주소에 접근한 후에 페이지에 표시된 메일의 링크를 통해서만 접근이 가능하다. 

      •  Connectedness (연결됨)
 - 일반 웹 페이지처럼 하나의 리소스들은 서로 주변의 연관 리소스들과 연결되어 표현(Presentation)되어야 한다.
 - 예를 들면,
<user>
  <name>MK</name>
</user> 는 연결되지 않은 독립적인 리소스이다.
<user>
  <name>MK</name>
  <home>MK/home/</home>
  <office>MK/office</office>
</user> 는 관련 리소스(home, office)가 잘 연결된 리소스의 표현이다.

      • Statelessness (상태 없음)
 - 현재 클라이언트의 상태를 절대로 서버에서 관리하지 않아야 한다.
 - 모든 요청은 일회성의 성격을 가지며 이전의 요청에 영향을 받지 말아야 한다.
 - 다시 또 코리아닷컴의 예를 들면 메일을 확인하기 위해 꼭 '..코리아닷컴../mailView.crd'에 접근하여 해당 세션을 유지한 상태에서 메일 리소스에 접근해야 한다. 이것이 바로 Statelessness가 없는 예이다.
 - 세션을 유지 하지 않기 때문에 서버 로드 발란싱이 매우 유리하다.
 - URI에 현재 state를 표현할 수 있어야 한다. (권장사항)

      • Homogeneous Interface (동일한 인터페이스)
 - HTTP에서 제공하는 기본적인 4가지의 method와 추가적인 2가지의 method를 이용해서 리소스의 모든 동작을 정의한다.
 - 리소스 조회 : GET
 - 새로운 리소스 생성 : PUT, POST (새로운 리소스의 URI를 생성하는 주체가 서버이면 POST를 사용)
 - 존재하는 리소스 변경 : PUT
 - 존재하는 리소스 삭제 : DELETE
 - 존재하는 리소스 메타데이터 보기 : HEAD
 - 존재하는 리소스의 지원 method 체크 : OPTION
 - 대부분의 리소스 조작은 위의 method를 이용하여 대부분 처리 가능하다. 만일 이것들로만 절대로 불가능한 액션이 필요할 경우에는 POST를 이용하여 추가 액션을 정의할 수 있다. (되도록 지양하자)


728x90
반응형
LIST

'Develop' 카테고리의 다른 글

Docker ubuntu install  (0) 2019.02.20
Docker install (for window10 pro)  (0) 2019.02.20
기대되는 오픈프로젝트  (0) 2016.08.10
Google의 웹기술 1000  (0) 2016.08.05
Fabric 적용하기~  (0) 2016.08.05
Comments