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 |
댓글