본문 바로가기
CS/Network

[네트워크] REST(Representational State Transfer)

by 테리는당근을좋아해 2020. 6. 27.

REST(Representational State Transfer)

- 월드 와이드 웹(WWW)과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식

- HTTP URI를 통해 자원을 명시하고, HTTP Method를 통해 해당 자원에 대한 CRUD Operation을 적용

 

1) 배경

- 애플리케이션의 분리 및 통합

- 다양한 클라이언트의 등장

 

2) 구성

(1) 자원(Resource)

- URI

- 모든 자원에 고유한 ID가 존재하며, 자원은 서버에 존재

- 클라이언트는 URI를 통해 자원을 명시하고, 해당 자원의 상태에 대한 조작을 서버에 요청

 

(2) 행위(Verb)

- HTTP Method

- 자원의 상태에 대한 조작을 명시하고 요청

 

(3) 표현(Representation of Resource)

- 클라이언트가 리소스에 대한 조작을 요청하면 서버는 이에 응답

- REST에서 하나의 자원은 JSON, XML, TEXT 등의 형태로 표현될 수 있음

 

3) 특징

(1) Server-Client(서버-클라이언트 구조)

- 클라이언트가 요청하면 서버는 이에 응답하는 네트워크 구조

 

(2) Stateless(무상태성)

- 클라이언트의 요청에 서버가 응답하면 연결이 끊어지고 이전 연결에 대한 상태를 유지하지 않음

 

(3) Cacheable(캐시 처리 가능)

- 자주 사용되는 문서의 사본을 HTTP 장치를 이용해 저장

 

(4) Layered-System(계층화)

- API 서버는 순수 비즈니스 처리 로직만 담당하며, 그 앞단에 사용자 인증, 암호화, 로드 밸런스 등을 두어 구조상에 유연성을 제공

 

(5) Code-On-Demand

- Optional

- 서버에서 보낸 코드가 클라이언트에서 실행 가능

 

(6) Uniform Interface

-  URI에 대한 조작이 통일되고 한정적인 인터페이스로 동작

 

(7) 자체 표현 구조

- 동사(Method) + 명사(URI)로 구성되어, API 메시지로만으로도 어떤 자원에 어떤 조작이 요청되는지 알 수 있음

 

4) 장점

- cross-platform한 API 구축

- 하이퍼미디어 API의 기본을 충실히 지키면서 범용성을 보장

- HTTP 프로토콜을 최대한 활용함으로써 여러 추가적인 장점을 가져갈 수 있음

 

5) 단점

- HTTP Method에 한정적인 조작

- 구형 브라우저와 호환성 문제

 

 

REST API

- REST 기반으로 서비스 API를 구현하는 것

- Open API와 마이크로 서비스 등을 제공하는 업체 대부분은 REST API를 제공

 

1) 특징

- REST 기반으로 시스템을 분산하므로써 확장성, 재사용성, 유지보수 등의 장점을 가져감

- HTTP를 지원하는 언어로 클라이언트와 서버를 구현할 수 있음

 

2) 기본규칙

- URI는 자원을 표현

- 자원에 대한 조작은 HTTP Method로 표현

 

 

RESTful

- REST 아키텍처를 구현한 웹 서비스

- REST 원리를 따르는 시스템

 

1) 목적

- 이해와 사용하기 쉬운 REST API를 만드는 것

- 퍼포먼스 향상이 아닌 API의 이해도 및 호환성 향상에 목적

 

2) RESTful하지 못하다는 것

- CRUD Operation이 POST로만 이루어지는 경우

- route에 resource와 id 이외의 정보가 들어가는 경우

 

 

'CS > Network' 카테고리의 다른 글

[네트워크] SYN Flooding  (0) 2020.06.27
[네트워크] SOAP와 REST  (0) 2020.06.27
[네트워크] DNS(Domain Name System)  (0) 2020.06.27
[네트워크] 웹 소켓(Web Socket)  (0) 2020.06.27
[네트워크] CSRF(Cross Site Request Forgery)  (0) 2020.06.27

댓글