REST, RESTful의 개념

2021. 7. 28. 14:55컴퓨터과학

728x90
반응형

REST(REpresentational State Tranfer)

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

 

REST는 “웹에 존재하는 모든 자원에 고유한 URI를 부여해 활용한다.

- 프론트앤드/ 백앤드가 데이터를 요청하고 응답할 때 인터페이스로써 쓰이는 구조.

- 자원을 정의하고 그 자원에 대한 주소를 지정하는 방법론.

- HTTP URI로 자원을 명시하고, HTTP MethodCRUD Operation을 적용한다.

CRUD기능 HTTP Method
Create POST
Read GET
Update PATCH, PUT
Delete DELETE

- RESTful : REST형식을 따르는 시스템.

 

REST 구성요소

- 자원(Resource) : URI
모든 자원은 고유한 ID를 갖게 된다. ID는 서버에 존재하게 되고, 서버의 클라이언트는 각 자원의 상태를 조작하기 위한 요청을 보낸다. URI는 명사로 지정되어 기능을 직관적이게 나타내야 한다.

요청 예시) HTTP에서 ‘Students/1’ 같은 HTTP URI로 사용된다.

- 행위(Verb) : Method
클라이언트는 자원 지정을 URI를 통해 하고, 자원 조작을 Method를 통해 한다. HTTP에서 CRUD기능을 담당하는 각 Method를 제공한다.

- 표현(Representation)
클라이언트가 서버로 요청을 보냈을 때 서버가 응답으로 보내주는 자원의 상태를 Representation이라고 한다. REST에서 하나의 자원은 JSON , XML , TEXT , RSS 등 여러형태의 Representation으로 나타낼수 있다.

REST 의 특징

- 클라이언트 / 서버 구조 (Client-Server)
자원이 있는 Server , 자원을 요청하는 Client의 구조를 가진다.

- 무상태 (Stateless)
HTTPStateless 프로토콜 이므로 REST 역시 무상태성을 가진다. 클라이언트의 Context 를 서버에 저장하지 않는다.

- 캐시 처리 가능 (Cachealble)
웹 표준 HTTP 프로토콜을 그대로 사용하므로 , 웹에서 사용하는 기존의 인프라를 그대로 활용 가능하다.

- 계층화
API 서버는 순수 비즈니스 로직을 수행하고 그 앞단에 사용자 인증 , 암호화 , 로드밸런싱 등을 하는 계층을 추가하여 구조상의 유연성을 줄 수 있다.

- 인터페이스 일관성(Uniform Interface)
URI로 지정한 자원에 대한 조작을 통일되고 한정적인 인터페이스로 수행한다. HTTP 표준에만 따른다면 모든 플랫폼에 사용이 가능하다.

- 자체 표현 구조
동사(Method) + 명사(URI) 로 이루어져있어 어떤 메서드에 무슨 행위를 하는지 알 수 있으며 REST API 자체가 매우 쉬워서 API 메세지 자체만 보고도 API를 이해할 수 있다

REST의 장단점

장점)

- 쉬운 사용
HTTP 프로토콜 인프라를 그대로 사용하므로 별도의 인프라를 구축할 필요가 없다.

- 클라이언트-서버 역할의 명확한 분리
클라이언트는 REST API를 통해 서버와 정보를 주고받는다. REST의 특징인 Stateless에 따라 서버는 클라이언트의 Context를 유지할 필요가 없다.

- 특정 데이터 표현을 사용가능
REST API는 헤더 부분에 URI 처리 메소드를 명시하고 필요한 실제 데이터를 ‘body’에 표현할 수 있도록 분리시켰다. JSON , XML 등 원하는 Representation 언어로 사용 가능하다.

 

단점)

- 메소드의 한계
RESTHTTP 메소드를 이용하여 URI를 표현한다. 이러한 표현은 쉬운 사용이 가능하다는 장점이 있지만 반대로 메소드 형태가 제한적인 단점이 있다.

- 표준이 없음
REST는 설계 가이드 일 뿐이지 표준이 아니다. 명확한 표준이 없다.

 

 

 

So, What is REST?

웹의 모든 자원을 URI로 표현하는 것입니다.

클라이언트와 서버간에 자원을 요청하고 응답하는 과정에서의 아키텍쳐이고,

서버의 자원을 URI로써 표현하고 관리하며

클라이언트에서 자원상태를 다루기 위해 HTTP메소드가 제공되고 CRUD기능을 수행하게 됩니다.

 

URI로 자원 상태 메소드를 드러내고 실제 데이터는 bodyJSON등의 형태로 표현됩니다.

 

 

 

 

 

 

 

 

/참고/https://hckcksrl.medium.com/rest%EB%9E%80-c602c3324196/

728x90
반응형