RESTFul 에 대해서 알아보자

2015.05.15 21:00

졸리운_곰 조회 수:307

 

RESTFul 에 대해서 알아보자

 

 

 

RESTful 이란 단어만 봐서는 그 의미를 알 수 없다. 

 

왜냐하면 약어이기 대문이다.

 

REpresentation State Transfer 의 약자이다.

 

rest 는 웹의 창시자 중의 한 사람인 roy fielding 의 박사 학위 논문에 의해 소개되었고

 

그는 현재의 웹 아키텍처가 웹이 지닌 본래의 설계 우수성을 충분히 활용하지 못하고 있다고 판한다고

 

장점을 최대한 활용할 수 있는 네트워크 기반의 아키텍처를 제안했는데 이것이 바로 rest 이다.

 

이러한 rest 아키텍처 스타일에 따라 정의 되고 이용되는 서비스를 restful 웹 서비스라고 한다.

 

기존은 URI + ACTION 관련된 함수 호출 정도였다고 하면

 

이제는 대상이 나오고 그 대상에 대해서 POST, GET, PUT, DELETE 라는 명령을 통해서

 

기존 DB에 가해졌던 CRUD 행위를 매핑시켜서 하자는 것이다.

 

즉, SQL과 매핑이 되겠지만, URI 호출을 통해서 해당하는 DB의 변화를 가질 수 있게 한 것이다. 

 

아래에 살펴 보겠지만 리소스 중심의 표현, 전달, 접근 방식의 특성으로 인해 리소스 기반 아키텍쳐(ROA) 라고 한다.

 

서비스 중심의 SOA 와 대응되는 개념으로 일컬어지고 있다.

 

즉, URI 만 알면 웹서버와 웹 클라이언트의 종류에 상관없이 HTTP프로토콜 만으로 접근 가능한 서비스라 할 수 있겠다.

 

이러한 단순 명로한 접근 방식 때문에 구글, 야후, 트위터 등 대부분의 웹 2.0 API 가 RESTful 웹서비스로 제공되고 있으며

 

위젯을 이용한 서비스 매시업(mashup) 을 활성화시킨 원동력이기도 하다.

 

 

SOAP? RESTful ??

 

SOA 기반의 웹서비스는 W3C 의 WS-* 로 일컬어지는 웹서비스 표준들을 통해 실현되고 있으며,

 

WS-* 표준들은 SOAP을 이용하여 메시지를 전달하고 있다.

 

그러나 웹서비스 전달 프로토콜인 SOAP은 HTTP 응용 프로토콜로서 SOAP 헤더와 바디로 구성되어 있고,  

 

메시지 송수신시 헤더와 바디의 인코딩/디코딩 과정이 필수이다. 

 

따라서 기본 HTTP 로 메시지를 전달하던 인터넷 서비스 분야에서는   

 

원하는 기능에 비해 SOAP 프로토콜 처리의 오버헤드가 문제가 되었다. 

 

이런 단점을 보완하고자 등장한 구현 기술이 RESTful 웹 서비스이다.

 

HTTP 의 기본 기능만으로 원격 정보에 접근하자는 것이다.

 

무조건 RESTful 이 좋다는 것은 아니다.

 

태생부터가 다른 SOAP과 RESTful 이다.

 

SOAP 기반의 웹 서비스는 서비스의 기술문서(WSDL)를 매개로 서비스 능력을 개방하고자 한 기술이고,

 

RESTful 웹 서비스는 URI 를 기반으로 리소스를 개방하고자 하는 기술인 것이다.

 

SOAP 기반 웹서비스의 요구가 기업의 비지니스 환경에서 응용 서비스 간 상호 운용을 위해 시작된 데 비해,

 

RESTful 웹 서비스는 인터넷 서비스 업체들이 응용 개발자들에게 손쉬운 데이터 제공을 목적으로 출발했다.

 

예로 '주분번호 12의 주문 상세 내역을 가져오라' 는 요청은

 

SOAP 기반 웹 서비스라면 getOrderDetails(order_no=12) 로 호출될 것이며,

 

RESTrul 웹 서비스라면 http GET/order/12 로 수행할 것이다. 즉 order 12가 리소스로서 GET 메소드로 관련 정보를 얻을 수 있다.

 

 

 

구성요소

 

기본 구성요소로는 resource, method, representation, stateless

 

 

1. resource

 

자원을 표현하는 것으로 http uri 에 의해 표현되면 웹사이트, 블로그, 이미지, 음악, 이용자, 지도, 검색 결과 등

 

웹에서 다른 이들과 공유하고자 하는 모든 자원을 의미한다.

 

예를 들면 123 이라는 ID 를 가지는 특정 붑품을 uri 로 표현하면

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

http://www.korea.co.kr/item/123  으로 표현이 가능하고 이 제품에 대한 주문은

(기존의 방식 - http://www.korea.co.kr/findItem.jsp?itemId=123  )

  

 

www.korea.co.kr/order/123 으로 표현한다.

 

2. http 메소드 (method)

 

rest 구조에서 리소스는 http 의 기본 메소드인 get, put, post, delete 만으로 접근할 수 있다.

 

4개의 메소드는 아래의 설명과 같이 일반 CRUD 오퍼레이션에 대응된다.

 

 HTTP 메소드

CRUD 오퍼레이션 

의미 

 POST

CREATE 

 생성

 GET

 READ

 검색

 PUT

 UPDATE

 수정

 DELETE

 DELETE

 삭제

 

 

예를들어

 

1234 라는 부품 정보를 가져오고 싶다면

 

URL : http://www.korea.com/item/123

Method : GET

 

2345 라는 부품정보를 생성하고 싶다면

 

URL : http://www.korea.com/item

Method : Post

<item>2345</item>

 

1234 라는 부품 정보를 4321 로 변경하고 싶다면

 

URL : http:://www.korea.com/items/1234

Method : PUT

<item>4321</item>

 

4321 이라는 부품 정보를 삭제하고 싶다면

 

URL : http://www.korea.com/items/4321

Method : delete

 

 

3. 표현 (representation)

 

http 기본 메소드로 전달되는 리소스는 다양한 방식으로 표현 되는데 이는 xml, json, html, 텍스트, 이미지 등이 가능하며

 

클라이언트에서 원하는 형식으로 요청하면 서버에서 이를 처리하게 된다.

 

리소스의 다양한 표현 방식은 http accept 헤더값 또는 url 파라미터로 지정하면 된다.

 

예를들어 표현은 URL 을 가지고 결정할 수 있으며

 

혹은 http 헤더의 contents_negotiation 을 이용하여 결정할 수 있다,

 

 

4. Stateless

 

리소스와 그를 지칭하는 URL, HTTP 메소드로 단일화된 인터페이스, 다양한 리소스 표현 등과 더불어

 

restful 웹 서비스의 중요한 특징중 하나가 Stateless 이다.

 

HTTP 의 특성을 상속하여 rest 역시 Stateless 특성을 가지게 되는데

 

이는 서버측에서 클라이언트 상태 정보를 저장 관리하지 않음을 의미 한다.

 

클라이언트가 http 요청을 할때 서버에서는 그 요청에 대한 모든 정보를 주어야 하며 이전의 요청에 의존해서는 안된다.

 

그러나, 웹 서비스 제공시 응용상태와 리소스의 상태관리가 팔요할 수 있으며

 

이를 위해서 서버와 클라이언트 간에 이들 상태를 명시적으로 전달하는 방법을 이용해야 한다

 

 

[출처] http://blog.naver.com/2evergr/60207148305

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
1195 [ 一日30分 인생승리의 학습법] VBA Web Scraping: How Can VBA Be Used To Scrape Website Data? file 졸리운_곰 2024.04.13 3
1194 [ 一日30分 인생승리의 학습법] 윈도우 실행파일 구조(PE파일) file 졸리운_곰 2024.03.31 3
1193 [ 一日30分 인생승리의 학습법] [Analysis] PE(Portable Executable) 파일 포맷 공부 file 졸리운_곰 2024.03.31 2
1192 [ 一日30分 인생승리의 학습법] 성공하는 메타버스의 3가지 조건 file 졸리운_곰 2024.03.30 7
1191 [ 一日30分 인생승리의 학습법] REST, REST API, RESTful 과 HATEOAS file 졸리운_곰 2024.03.10 9
1190 [ 一日30分 인생승리의 학습법] 렌더링 삼형제 CSR, SSR, SSG 이해하기 file 졸리운_곰 2024.03.10 2
1189 [ 一日30分 인생승리의 학습법] 엑셀 VBA에서 셀레니움 사용을 위한 Selenium Basic 설치 file 졸리운_곰 2024.02.23 10
1188 [ 一日30分 인생승리의 학습법]500 Lines or Less Blockcode: A Visual Programming Toolkit : 500줄 이하의 블록코드: 시각적 프로그래밍 툴킷 졸리운_곰 2024.02.12 4
1187 [ 一日30分 인생승리의 학습법] 구글 클라이언트(앱) 아이디를 발급받으려면 어떻게 해야 하나요? 졸리운_곰 2024.01.28 3
1186 [ 一日30分 인생승리의 학습법] 빅뱅 프로젝트를 성공적으로 오픈하기 위한 팁 졸리운_곰 2023.12.27 15
1185 [ 一日30分 인생승리의 학습법]“빅뱅 전환보다 단계적 전환 방식이 이상적 애자일팀과 협업 쉽게 체질 개선을” file 졸리운_곰 2023.12.27 12
1184 [ 一日30分 인생승리의 학습법] Big-bang / phased 접근 file 졸리운_곰 2023.12.27 3
1183 [ 一日30分 인생승리의 학습법] CodeDragon 메뉴 데이터 전환의 개념 이해 - 데이터 전환의 개념, 데이터 전환방식, 데이터 전환방식 및 장단점 비교, 데이터전환 이후 검토해야 할 사항 졸리운_곰 2023.12.27 5
1182 [ 一日30分 인생승리의 학습법] 블록체인과 IPFS를 이용한 안전한 데이터 공유 플랫폼 - 분쟁 해결 시스템 file 졸리운_곰 2023.12.27 6
1181 [ 一日30分 인생승리의 학습법] 블록체인과 IPFS를 이용한 안전한 데이터 공유 플랫폼 - 개념과 리뷰 시스템 file 졸리운_곰 2023.12.27 4
1180 [ 一日30分 인생승리의 학습법] 소켓 CLOSE_WAIT 발생 현상 및 처리 방안 file 졸리운_곰 2023.12.03 7
1179 [ 一日30分 인생승리의 학습법] robots 설정하기 졸리운_곰 2023.12.03 3
1178 [ 一日30分 인생승리의 학습법] A Tutorial and Elementary Trajectory Model for the Differential Steering System of Robot Wheel Actuators : 로봇 휠 액츄에이터의 차동 조향 시스템에 대한 튜토리얼 및 기본 궤적 모델 file 졸리운_곰 2023.11.29 6
1177 [ 一日30分 인생승리의 학습법] Streamline Your MLOps Journey with CodeProject.AI Server : CodeProject.AI 서버로 MLOps 여정을 간소화하세요 file 졸리운_곰 2023.11.25 2
1176 [ 一日30分 인생승리의 학습법] Comparing Self-Hosted AI Servers: A Guide for Developers / : 자체 호스팅 AI 서버 비교: 개발자를 위한 가이드 file 졸리운_곰 2023.11.25 10
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED