프론트 개발을 하며 서버단과 소통을 하다보면 REST API라는 말을 자주 듣게 된다.
REST API는 웹 기반의 시스템에서 클라이언트와 서버가 원활하게 통신할 수 있게 해주는 일종의 지침이자 설계 원칙이다.
1. REST
REST는 Representational State Transfer의 약자로
HTTP URI를 통해 자원(Resource)를 명시하고, HTTP 메소드 (GET, POST, PUT, PATCH, DELETE)를 통해 해당 자원에 대한 CRUD(Create, Read, Update, Delete)를 적용하는 것을 의미한다.
2020.04.10 - [Frontend/Web] - URI vs URL 비교
자원 즉, 문서, 사진, 그림, 데이터 등의 정보를 URI를 통해 명시한다 (이 때 URI는 동사가 아닌 명사로만 이뤄진다.)
ex) 특정 예술가들의 정보가 자원일 경우 /artists 라고 URI에 자원을 명시한다. (명사, 복수형으로 작성한다.)
GET /artists -> 아티스트 목록을 가져온다.
GET /artists/musician -> 아티스트 중 세부 카테고리 뮤지션 목록을 가져온다.
POST /artists -> 아티스트 목록에 새로운 아티스트 정보를 추가한다.
PUT /artists -> 아티스트 목록을 수정한다.
DELETE /artists -> 아티스트 목록을 제거한다.
위와 같이 artists 라는 복수형 명사로 URI에 자원을 명시한다.
그리고 GET, POST, PUT, DELETE 와 같은 HTTP 메소드를 통해서 서버에 요청을 하기 때문에
REST API 메시지만으로도 어떤 자원을 어떤식으로 처리할 것인지를 명시적으로 알 수 있다.
그리고 클라이언트에서 URI에 자원을 적어서 HTTP 메소드로 요청을 하면
서버에서는 적절한 응답을 보내게 되는데 JSON, XML, TEXT, RSS 등 여러 형태로 응답을 받을 수 있지만
주로 JSON이나 XML을 통해 데이터를 주고 받는 것이 일반적이다.

2. REST API 특징
1. Uniform Interface(인터페이스 일관성)
표준화된 인터페이스로 다양한 클라이언트에서 서버로 접근이 가능하다.
URI로 지정한 자원에 대해 요청을 통일되게 수행한다.
또한 HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하기 때문에 특정 언어나 기술에 종속되지 않는다.
2. Stateless(무상태성)
서버가 클라이언트 요청에 대한 상태를 저장하지 않는다. 그렇기 때문에 API 서버는 클라이언트의 요청만 단순 처리한다.
클라이언트의 이전 요청이나 세션, 쿠키 정보를 별도로 저장 및 관리하지 않기 때문에 서비스의 자유도가 높아진다. (단순 처리만 하면 돼서 구현이 단순해진다.)
3. Cacheble(캐시가능)
HTTP 캐싱을 활용할 수 있어서 성능이 향상되고 대량의 요청을 효율적으로 처리할 수 있다.
*무상태성과의 차이라면 무상태성은 서버가 클라이언트의 '상태'를 저장하지 않고 요청마다 독립적으로 처리하는 것이고
캐시 가능은 서버의 '응답' 데이터를 클라이언트나 중간 프록시 서버에서 저장해서 재사용 할 수 있는 것이다.
4. Server-Client(서버-클라이언트 구조)
자원이 있는 쪽이 서버, 요청하는 쪽이 클라이언트가 된다.
서버는 API를 제공하고 비즈니스 로직 처리 및 저장을 담당하고
클라이언트는 사용자 인증이나 세션, 로그인 등을 직접 관리하고 책임진다.
이런식으로 역할을 확실하게 분리해서 서로간의 의존성을 줄인다.
5. Self-descriptiveness(자체 표현 구조)
REST API 메시지만 보고도 어떤 자원에 어떤 요청을 하는지 쉽게 이해할 수 있다.
https://aws.amazon.com/ko/what-is/restful-api/
https://junvelee.tistory.com/107
'Frontend > Vue.js, React' 카테고리의 다른 글
| CSR, SSR, 유니버셜 렌더링 (0) | 2025.09.10 |
|---|---|
| [vue 2 기초] Axios (액시오스) (0) | 2023.11.07 |
| [vue 2 기초] 라우터 (1) | 2023.11.06 |
| [vue 2 기초] 컴포넌트 통신(props, event emit) (1) | 2023.11.04 |
| [Vue 2 기초] 컴포넌트 (0) | 2023.11.03 |