jiseongkimu / java_test_1330

0 stars 0 forks source link

REST에 대하여 정리 #27

Open DaeAkin opened 3 years ago

DaeAkin commented 3 years ago
jiseongkimu commented 3 years ago

REST

Representational State Transfer

자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것이 REST다.

이것이 무슨 말이냐, 자원(Resource)의 표현(Representation)에 의한 상태(State / 정보) 전달을 말한다.

자원의 표현?

자원 : 해당 소프트웨어가 관리하는 모든 것

자원의 표현 : 그 자원을 표현하기 위한 이름

상태(정보) 전달?

데이터가 요청 되어지는 시점에서 자원의 상태(정보)를 전달한다.

JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이다.

REST의 구체적인 개념

HTTP URI를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.

즉 REST는 자원 기반의 구조(ROA, Resource Oriented Architecture) 설계의 중심에 자원이 있고 HTTP Method를 통해 자원을 처리하도록 설계죈 아키텍처이다. 웹 사이트의 이미지, 텍스트, DB내용 등의 모든 자원에 고유한 ID 인 HTTP URI를 부여한다.

Q) URI 과 URL의 차이점은?

URL은 Uniform Resource Locator로 인터넷 상 자원의 위치를 의미한다. 자원의 위치라는 것은 결국 어떤 파일의 위치를 의미한다. 반면에 URI는 Uniform Resource Identifier로 인터넷 상의 자원을 식별하기 위한 문자열의 구성으로, URI는 URL을 포함하게 된다. 그러므로 URI가 보다 포괄적인 범위라고 할 수 있다.

CURD Operation

왜 REST를 쓰는가?

최근의 서버 프로그램은 다양한 브라우저와 안드로이드폰, 아이폰과 같은 모바일 디바이스에서도 통신을 할 수 있어야한다. 이러한 멀티 플랫폼에 대한 지원을 위해 서비스 자원에 대한 아키텍처를 세우고 이용한 방법을 모색하고, REST에 이르렀다.

REST 구성 요소

REST 특징

1. Server-Client 구조

자원이 있는 쪽이 Server, 자원을 요청하는 쪽이 Client가 된다. 상호 간 의존성이 줄어든다.

2. Stateless(무상태)

HTTP 프로토콜 처럼 REST역시 무상태의 특징을 갖는다.

3. Cacheable(캐시 처리 기능)

웹 표준 HTTP 프로토콜을 그대로 사용하므로 웹에서 사용하는 기존의 인프라를 그대로 활용할 수 있다.

4. Layered System(계층화)

Client는 REST API Server만 호출한다.

REST Server는 다중 계층으로 구성될 수 있다.

PROXY, 게이트웨이 같은 네트워크 기반의 중간 매체를 사용할 수 있다.

5. Code-On-Demand(Optional)

Server로 부터 스크립트를 받아서 Client에서 실행한다(선택적)

6. Uniform Interface(인터페이스 일관성)

URI로 지정한 자원에 대한 조작을 통일되고 한정적인 인터페이스로 수행한다.

HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다(특정 언어나 기술에 종속되지 않는다.)

REST API

API(Application Programming Interface)

REST API

REST API의 특징