-
TIL_200929 (REST API)Today I Learned 2020. 9. 30. 02:00
Representational State Transfer
REST는 자원 기반의 구조(ROA, Resource Oriented Architecture) 설계의 중심에 Resource가 있고 HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍쳐입니다.
최근 서버 프로그램은 다양한 브라우저와 모바일 디바이스에서 통신을 할 수 있어야 합니다. 이러한 멀티 플랫폼에 대한 지원을 위해 서비스 자원에 대한 아키텍처를 세우고 이용하는 방법입니다.
REST의 특징
1. Server-Client (서버-클라이언트 구조)
- server의 자원을 바탕으로 API를 제공하고, client에서 자원을 요청합니다.
2. Stateless (무상태)
- server는 각각의 요청을 별개의 것으로 인식하고 처리한다
3. Cacheable (캐시 처리 기능)
- HTTP의 캐시 사용을 통해 전체 응답시간, 성능, 서버의 자원 이용률을 향상시킨다.
4. Layered System (계층화)
- REST Server는 다중 계층으로 구성하여 앞단에 보안, 암호화, 사용자 인증 등을 추가할 수 있다.
5. Uniform Interface (인터페이스 일관성)
- Resource에 대한 조작을 통일되고 한정적인 인터페이스로 수행합니다.
6. Code-On-Demand(optional)
- server로 부터 스크립트를 받아서 client에서 실행합니다.
REST API란
REST 기반으로 서비스 API를 구현한 것입니다. 구글 맵, 공공 데이터 같은 OpenAPI, 마이크로 서비스가 대부분 REST API로 제공됩니다.
REST API의 대상이 되는 리소스는 URL로 정의됩니다. URL은 특정 자원의 위치를 나타내는 주소로써 인터넷 프토로콜(HTTP) 혹은 파일 전송 프로토콜(FTP)과 함께 사용하는 경우가 많습니다. 리소스의 내용은 json, xml, yaml 등의 다양한 표현 언어로 정의합니다.
REST API에서는 리소스에 대한 행위가 일관된 메소드에 의해 다루어집니다. REST API에서 사용되는 메소드는 HTTP Method로 POST, GET, PUT, PATCH, DELETE 등이 있습니다. 이 메소드들을 통해 해당 자원에 대한 CRUD Operation을 적용합니다.
Create: POST
Read: GET
Update: PUT, PATCH
Delete: DELETE
RESTful 이란
이해하기 쉽고 사용하기 쉬운 REST API를 만들기 위한 방법입니다. 호환성을 높이는 것이 주 동기이므로 성능이 중요한 상황에서 RESTful한 API를 구현할 필요는 없습니다.
'Today I Learned' 카테고리의 다른 글
TIL_201002(webpack) (0) 2020.10.02 TIL_200930(webpack) (0) 2020.10.01 TIL_200921(GoF pattern2 & cheat sheet) (0) 2020.09.21 TIL_200920(아키텍쳐 패턴) (0) 2020.09.21 TIL_200919(GoF pattern) (0) 2020.09.18