가취공부하자

REST(Representational State Transfer)란? 본문

Python/(책)파이썬과 비지니스 자동화

REST(Representational State Transfer)란?

keepGGoing 2022. 7. 31. 20:31

REST의 개념

- HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고 HTTP Method(POST, GET, PUT, DELETE)를 통해 자원에 대한 CRUD 기능(Create, Read, Update, Delete)을 적용하는 것을 의미한다.

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

 

더보기

URI란? URL과 차이점은?

https://www.charlezz.com/?p=44767

적용 CRUD동작 예시

- CREATE : 데이터 생성 (POST)

- READ : 데이터 조회 (GET)

- UPDATE : 데이터 수정 (PUT)

- DELETE : 데이터 삭제 (DELETE)

- HEAD : 네트워크상 데이터의 header 정보 조회(HEAD) {-- 이 부분은 잘 모르겠다}

 

REST 구성

- 자원(Resource) : URI

- 행위 (Verb) : HTTP Method

- 표현 (Representations)

 

REST 특징

- Client-server :
REST는 서버에 REST API를 제공함으로써 클라이언트와 서버의 역할이 구분이 된다. 결과적으로 REST API 확장성이 더 향상된다.

 

- Stateless (무상태) :

REST는 무상태성 성격을 가진다. 다시 말해 작업을 위한 상태정보를 따로 저장하지 않고 관리하지 않는다. 세션 정보나 쿠키 정보를 별도로 저장하지 않고 관리하기 때문에 API는 단순 요청만을 처리하면 된다. 그래서 서비스의 자유도가 높아지고 서버에서 불필요한 정보를 관리하지 않아 구현이 단순해진다.

 

- Cacheable (캐시 처리 기능) :

REST의 가장 큰 특징 중 하나는 HTTP라는 기존 웹 표준을 그대로 사용하기 때문에 웹에서 사용하는 기존 인프라를 그대로 활용할 수 있다. 따라서 HTTP가 가진 캐싱 기능이 적용 가능하기에 시스템 성능을 향상할 수 있다.

 

- Layered system (계층형 구조) : 

REST서버는 클라이언트와 직접 상호작용할 수도 있고, 캐시 혹은 로드 밸런서 (Load balancer) 같은 중간 서버를 가질 수 있다.

 

등등..

 

REST의 장단점

장점

1. HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구축할 필요가 없다.

2. HTTP 프로토콜의 표준을 최대한 활용하여 여러 추가적인 장점을 함께 가져갈 수 있다

3. HTTP 프로토콜의 표준을 따르는 모든 플랫폼에서 사용이 가능하다.

4. REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.

5. 여러 가지 서비스 디자인에서 생길 수 있는 문제를 최소화한다.

6. 서버와 클라이언트의 역할을 명확하게 분리한다.

 

단점

1. 사용할 수 있는 메소드가 4개밖에 없다.

2. HTTP Method 형태가 제한적이다.

3. 브라우저를 통해 테스트할 일이 많은 서비스라면 쉽게 고칠 수 있는 URL보다 Header 정보의 값을 처리해야 하므로 전문성이 요구된다.

 

RESTful API의 URI 설계 규칙

- 동사를 사용하지 않고 명사를 사용한다. 그리고 대문자보다는 소문자 사용

ex) HttpMethod  -> httpmethod

- 하이픈(-) 사용 , 밑줄(_)은 지양

ex) httpmethod   ->   http-method

-  확장자 사용 지양 

ex) image.jpg  -> image

-  행위는 URI로 표기하지 않음,

ex) POST / user/1/delete   ->  DELETE/ user / 1

- 행위는 반드시 Method(GET, POST, PUT, DELETE)로 표기

 

참조

https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

http://www.incodom.kr/REST

https://jsmun.com/67