RESTful API란?
RESTful API는 Roy Fielding이 2000년 박사논문에서 제안한 REST(Representational State Transfer) 아키텍처 스타일을 따르는 API를 말합니다.
쉽게 말하면 HTTP를 잘 활용해서 자원을 일관성 있게 다루는 API 설계 방식입니다.
REST의 핵심 개념
1. 자원(Resource) 중심 설계
- 모든 것을 자원(명사)로 표현
- URL은 동사가 아니라 명사 형태
예:
/users
/orders
/products/1
잘못된 예:
/getUser
/createOrder
2. HTTP Method로 행위 표현
| Method | 의미 |
| GET | 조회 |
| POST | 생성 |
| PUT | 전체 수정 |
| PATCH | 일부 수정 |
| DELETE | 삭제 |
예시:
GET /users/1 -> 1번 유저 조회
POST /users -> 유저 생성
PUT /users/1 -> 1번 유저 수정
DELETE /users/1 -> 삭제
3. Stateless (무상태성)
- 서버는 이전 요청을 기억하지 않음
- 매 요청마다 인증 정보 포함 (예: JWT)
4. HTTP 상태코드 활용
| 코드 | 의미 |
| 200 | 성공 |
| 201 | 생성 성공 |
| 400 | 잘못된 요청 |
| 401 | 인증 실패 |
| 404 | 없음 |
| 500 | 서버 오류 |
RESTful API 예시(Spring)
@GetMapping("/users/{id}")
public User getUser(@PathVariable Long id) {
return userService.findById(id);
}
이 코드가 Restful한 이유는 다음과 같다.
- URL이 자원 중심
- HTTP GET 사용
- 상태코드 자동 반환
Restful vs 그냥 API의 차이
| 그냥 API | Restful API |
| 규칙 제각각 | 명확한 설계 원칙 |
| 동사 중심 | 명사 중심 |
| 상태코드 안씀 | HTTP 규칙 적극 활용 |
요약하자면 RESTful API = HTTP를 규칙적으로 잘 사용하는 자원 중심 API 설계 방식이다.