REST API, RESTful API 정리
미음제
·2022. 9. 29. 17:14
REST 용어
Representational State Transfer의 약자로 로이 필딩 논문(2000년)에 처음으로 소개되었다. Wiki 정의를 보면 다음과 같다.
REST(Representational State Transfer)는 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다. 이 용어는 로이 필딩(Roy Fielding)의 2000년 박사학위 논문에서 소개되었다. 필딩은 HTTP의 주요 저자 중 한 사람이다. 이 개념은 네트워킹 문화에 널리 퍼졌다.
로이 필딩은 잘 설계되어 있는 HTTP를 제대로 사용하지 못하는 것에 대한 아쉬움이 있어 최대한 활용할 수 있는 REST 아키텍처를 발표했다고 한다.
REST API, RESTful API란?
REST는 API와 같은 프로토콜이 아닌 하나의 소프트웨어 아키텍처로 API 작동 방식에 어떤 조건을 부여하는 것이다. REST의 기본 원칙을 지킨 서비스 디자인을 RESTful이라고 표현한다.
RESTful API를 통해 특정 자원에 대해 요청할 수 있고 응답을 받을 수 있다.
REST의 구성
- 자원 - URI
- 행위 - Method(GET, POST, PUT, PATCH, DELETE)
- 표현 - HTTP Message Payload
REST 핵심 규칙
URI는 자원을 표현하는데 집중하고,
Method는 행위에 대한 정의를 한다.
URI는 자원을 표현하면서 동사 사용을 지양하고 명사 사용을 지향한다. Method는 자원에 대한 행위를 나타낸다. 이 핵심 가치를 통해 API로 무엇을 하는지 명확하게 이해할 수 있어야 한다.
// BAD
GET : www.example.com/getUser/1
// GOOD
GET : www.example.com/user/1
// BAD
GET : www.example.com/user/1/delete
// GOOD
DELETE : www.example.com/user/1
Method 종류
Method | 행위 | 내용 | Body(Payload) |
GET | 검색 | 특정 index 혹은 모든 리소스 조회 | X |
POST | 생성 | 서버에 리소스를 생성 | O |
PUT | 교체 | 리소스 전체를 교체 | O |
PATCH | 수정 | 리소스 일부만 수정 | O |
DELETE | 삭제 | 특정 index 혹은 모든 리소스 삭제 | X |
PATCH와 PUT의 차이
기본적으로 두 메소드 모두 수정(업데이트)을 위한 메서드이다. 다만 PUT의 경우 수정을 원하지 않는 프로퍼티까지 작성해 주어야 한다. PUT을 사용할 때 모든 필드를 입력하지 않으면 누락된 필드는 null로 정의된다. 반면 PATCH는 원하는 프로퍼티만 작성하면 된다.
// age를 수정한다고 했을 때,
// PUT의 경우 모든 필드를 입력
{
"name": "minje",
"age": "27",
}
// PATCH의 경우 age 필드만 입력
{
"age": "27",
}
REST 특징
1. Uniform Interface
URI로 지정한 리로스에 대한 조작을 한정된 Interface로 수행한다.
www.example.com/user
user uri에 대하여 GET, POST, PUT, DELETE Method를 수행한다.
GET - 모든 user 정보 조회
POST - user 생성
PUT - 유저 정보 수정
DELETE - 유저 삭제
2. Stateless
작업 수행을 위한 상태를 갖지 않는다. 서버 쪽에서 클라이언트에 대한 상태(세션, 쿠키 정보)를 저장하지 않고 단순히 들어오는 요청을 처리한다.
3. 캐시
HTTP 표준을 그대로 사용해 HTTP가 제공하는 캐싱을 지원한다. 예를 들어 공통 바닥글/머리글 이미지가 있는 경우 페이지 이동시마다 새로 요청을 하는 것은 비효율적이다. 이때 첫 번째 응답 후 이미지를 캐싱을 해두고 이미지를 사용하면 요청을 매번 보내지 않아도 된다.
4. 자체 표현 구조
REST API 메세지만으로도 쉽게 이해할 수 있다.
5. Client - Server
서버는 API, 클라이언트는 인증 관리 구조로 역할을 구분해 서로 의존성을 줄인다.
6. 계층 구조
클라이언트는 API 서버만 호출한다. 서버는 다중 계층 설계가 가능하다. API Server는 비즈니스 로직을 처리하고 그 앞쪽에 암호화나 인증을 추가할 수 있다. 또한 Proxy, Gateway 같은 중간 매개체도 사용할 수 있다.
참고
'Developer > TI' 카테고리의 다른 글
Babel, Webpack(바벨, 웹팩) (0) | 2022.11.22 |
---|---|
프로미스, 콜백 함수 (0) | 2022.11.08 |
이벤트 버블링/캡쳐링, 이벤트 위임 (1) | 2022.10.30 |
자바스크립트 script async/defer 어트리뷰트 (0) | 2022.10.21 |
브라우저 렌더링 과정 정리 (2) | 2022.10.11 |