REpresentational State Transfer 의 약자
- WEB과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식,
리소스 지향 아키텍처- 자원을 이름(자원의 표현)으로 구분해 해당 자원의 상태(정보)를 주고 받는 모든 것
- 자원(resource)의 표현(representation)에 의한 상태 전달을 뜻함
※ RESTful 이란
REST API의 설계 규칙을 올바르게 지킨 시스템을 RESTful 하다고 할 수 있음
모든 CRUD 기능을 POST로 처리하는 API 혹은 URI 규칙을 올바르게 지키지 않는 API는
REST API를 사용하였지만 RESTful 하지 못한 시스템이라 할 수 있다
※ CRUD operation 이란
CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인
Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말로
REST에서의 CRUD Operation 동작 예시는 이하와 같음
Create : 데이터 생성(POST)
Read : 데이터 조회(GET)
Update : 데이터 수정(PUT, PATCH)
Delete : 데이터 삭제(DELETE)
REST는 다음의 3가지로 구성
자원 (Resource) - URI
자원에 대한 행위 (Verb) - HTTP Method
HTTP Method | Operation | 설명 |
POST | Create | 데이터 조회, URI가 가진 정보를 검색하기 위해 서버에 요청 |
GET | Read | 데이터 생성, 클라이언트에서 서버로 전달하려는 정보를 보냄 |
PUT | Update | 데이터 수정, 데이터 전체를 수정 |
PATCH | Update | 데이터 수정, 데이터 일부만 수정 |
DELETE | Delete | 데이터 삭제, (안전성 문제로 대부분 서버에서 비활성화) |
표현 (Representation of Resource)
Server-Client 구조
무상태(Stateless)
캐시 처리 가능(Cachealble)
계층화(Layered System)
인터페이스 일관성(Uniform Interface)
자체 표현 구조
REST API 란? REST의 원리를 따르는 API를 의미
REST API 를 올바르게 설계하기 위해서는 지켜야 하는 몇가지 규칙이 있음, 이하 규칙을 소개
참고) API (Application Programming Interface) 란?
애플리케이션 소프트웨어를 구축하고 통합하기 위한 정의 및 프로토콜 세트
REST API 설계 예시
URI 는 동사보다 명사를, 대문자보다는 소문자를 사용
(×) http://example.com/Running/
(○) http://example.com/run/
마지막에 슬래시(/)를 포함하지 않음
(×) http://example.com/Running/
(○) http://example.com/run/
언더바 대신 하이픈을 사용
(×) http://example.com/test_blog
(○) http://example.com/test-blog
파일확장자는 URI 에 포함하지 않음
(×) http://example.com/photo.jpg
(○) http://example.com/photo
행위를 포함하지 않음
(×) http://example.com/delete-post/1
(○) http://example.com/post/1