RESTFull이란 말을 Django 프레임워크를 하면서 한번씩 듣곤 하였다.
그래서 해당 언어가 어떤 뜻인지 나중에 찾아봐야지 생각만하고 미루다가 이렇게 뒤늦게 정리해보고자 한다.
https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
글 정리는 해당 블로그 내용을 참조하였다.
1. REST(Representational State Transfer)
1) 개념과 특징
REST란 SW 아키텍쳐의 한 방식으로, 자원을 표현으로 구분하여 상태 정보를 주고받는 것을 뜻한다.
Server-Client 간의 통신 방식 중 하나이다.
말 그대로, 자원을 표현(Representation)을 통해 상태 정보(State)로 주고 받으며 동작한다.
예를 들어, 내가 웹 서버의 DB에 있는 Post(글) 모델 데이터를 주고 받으려 할때를 가정해보자.
자원 -> 실제 DB에 있는 Post data
자원의 표현 -> Post(이를 지칭하는 이름)
상태 정보 교환 -> XML, JSON
이렇게 데이터를 주고 받는 과정을 뜻한다.
실제 4가지의 HTTP method를 통해 처리를 하는데 다음과 같다.
http method: GET url: /post => 포스트 이름을 나타내기
http method: POST url: /post => 포스트 이름을 추가
http method: PUT url: /post => 포스트 이름을 변경
http method: DELETE url: /post => 포스트 이름을 삭제
이러한 REST의 개념은 웹과 HTTP 프로토콜을 그대로 활용하기에 웹의 장점을 그대로 활용하는 구조적 특징을 지니고 있다.
2) 구체적 개념
- HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고 , HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.
- 즉, REST는 자원 기반의 구조(ROA, Resource Oriented Architecture) 설계의 중심에 Resource가 있고 HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍쳐를 의미한다.
- 웹 사이트의 이미지, 텍스트, DB 내용 등의 모든 자원에 고유한 ID인 HTTP URI를 부여한다.
3) 장단점
장점
- HTTP 프로토콜을 그대로 사용할 수 있다(HTTP 프로토콜 모든 플랫폼 적용가능, HTTP 기존 장점 적용가능)
- 서버와 클라이언트의 역할을 명확히 구분할 수 있다.
- 하이퍼미디어 API의 기본을 지키면서 범용성을 확장할 수 있다.
- 하나의 url에 4가지의 HTTP method를 통해 다양하게 처리할 수 있다.
단점
- 표준이 존재하지 않는다.
- 사용할 수 있는 메소드가 4가지 밖에 없다(HTTP Method 형태가 제한적이다)
- 구형 브라우저와의 호환성(PUT, DELETE, PushState 등)
2. REST API
1) 개념
REST API란 REST 구조로 만들어진 API를 뜻한다. Open API가 발달됨에 따라 REST 구조의 API들도 많이 등장하고 활용되게 되었다.
2) 특징
높은 확장성과 재사용성이 가장 큰 특징이다.
마찬가지로 HTTP 표준을 기반으로 구현되어 있기에, HTTP를 지원하는 프로그램 언어로 구현이 가능하다.
3. RESTFull API
1) 개념
RESTFull API란 REST한 API를 뜻하는 것이다. REST API를 제공하는 웹 서비스를 RESTFull 하다고 표현한다.
REST한 시스템들 또한 RESTFull하다고 표현할 수 있다.
2) 목적
이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것
RESTFull API는 성능 향상의 목적보다도 API에 대한 이해도 및 호환도에 목적이 있다.
'Archived(IT) > 배경지식_기술' 카테고리의 다른 글
컨테이너 기술 (0) | 2019.11.02 |
---|---|
웹 서버 Nginx_Apache (0) | 2019.11.02 |
DevOps (0) | 2019.10.31 |
MVC 개발 방식 (0) | 2019.10.31 |
DataBase 종류별 특징 (0) | 2019.10.27 |