담비의 개발블로그

rest api의 정의 본문

CS(컴퓨터과학)

rest api의 정의

담비12 2025. 3. 27. 17:20

 

REST란?


REST(Representational State Transfer)는 분산 시스템에서 네트워크 상의 자원(Resource)을 효과적으로 관리하기 위한 소프트웨어 아키텍처 스타일이다. 2000년 로이 필딩(Roy Fielding)이 논문에서 제안한 개념으로, 웹의 기본 원리인 HTTP 프로토콜을 최대한 활용하는 설계를 지향한다.

 

REST API란?


REST API는 REST 아키텍처 스타일을 따르는 API(Application Programming Interface)로, HTTP 기반으로 동작하며, 클라이언트와 서버 간에 데이터를 주고받을 때 사용된다.

 

 

 

REST의 주요 원칙 (RESTful API의 설계 원칙)


1. 클라이언트-서버(Client-Server) 구조
- 클라이언트(예: 웹, 모바일 앱)와 서버(예: 백엔드)는 완전히 분리되어야 한다.
- 클라이언트는 서버의 자원을 요청하고, 서버는 해당 요청을 처리하여 응답을 반환한다. 이를 통해 클라이언트와 서버의 독립성이 보장되며, 각각의 확장이 용이하다.

2. 무상태성(Stateless)
- 서버는 클라이언트의 요청을 처리할 때, 이전 요청의 상태를 저장하지 않는다.
- 모든 요청은 필요한 정보를 자체적으로 포함하여 보내야 한다. 예를 들어, 로그인 상태를 서버에서 유지하는 것이 아니라, 토큰(JWT 등)을 사용하여 인증한다.

3. 캐시 가능(Cacheable)
- REST API는 HTTP의 캐싱 기능을 활용할 수 있어야 한다. 예를 들어, GET 요청에 대한 응답은 캐싱할 수 있으며, Cache-Control 헤더를 사용하여 캐싱 정책을 설정할 수 있다.

4. 계층화된 시스템(Layered System)
- 클라이언트는 직접적으로 서버와만 통신하는 것이 아니라, 여러 계층을 거칠 수 있다. 예를 들어, 로드 밸런서, 프록시 서버, 보안 게이트웨이 등이 중간에 존재할 수 있으며, 클라이언트는 이를 구분할 필요가 없다.

5. 일관된 인터페이스(Uniform Interface)
- REST API는 일관된 방식으로 설계되어야 하며, 자원(Resource)과 이를 조작하는 방법이 명확해야 한다. 이를 위해 URI 설계와 HTTP 메서드 사용 원칙이 존재한다.

6. Code on Demand (선택 사항)
- REST는 필요할 경우, 클라이언트가 실행할 수 있는 스크립트(예: JavaScript 코드)를 제공할 수도 있다. 하지만, 이 원칙은 선택적이며, 대부분의 REST API에서는 적용되지 않는다.

 

 

 

 

REST API의 구성 요소

1. 자원(Resource)
REST API에서 가장 중요한 개념은 "자원(Resource)"이다.
자원은 URI(Uniform Resource Identifier)로 표현된다.
예를 들어, https://api.example.com/users/1는 ID가 1인 "User" 자원을 나타낸다.

2. HTTP 메서드 (CRUD 매핑)
REST API는 HTTP 메서드를 활용하여 자원을 조작한다.

HTTP메서드 역할 예시
GET 데이터 조회(Read) GET /users (전체 사용자 목록 조회)
POST 데이터 생성(Create) POST /users (새 사용자 등록)
PUT 데이터 전체 수정(Update) PUT /users/1 (ID 1 사용자 전체 수정)
PATCH 데이터 일부 수정(Update) PATCH /users/1 (ID 1 사용자 일부 수정)
DELETE 데이터 삭제(Delete) DELETE /users/1 (ID 1 사용자 삭제)



3. HTTP 상태 코드 (Response Status Code)
REST API는 응답 시, HTTP 상태 코드를 사용하여 결과를 알려준다.

상태코드 의미 설명
200 OK 성공 요청이 정상적으로 처리됨
201 Created 리소스 생성됨 새로운 자원이 생성됨 (예: 회원 가입 성공)
204 No Content 성공(내용 없음) 요청은 성공했지만, 반환할 내용이 없음 (예: 삭제 성공)
400 Bad Request 잘못된 요청 요청이 유효하지 않음
401 Unauthorized 인증 필요 인증되지 않은 사용자
403 Forbidden 접근 금지 권한이 부족함
404 Not Found 리소스 없음 요청한 자원이 존재하지 않음
500 Internal Server Error 서버 오류 서버에서 오류 발생