2026-01-15
REST (Representational State Transfer)
REST API란?
URL은 자원, 동작은 HTTP 메서드
REST
- 자원을 URI로 표현하고, HTTP 메서드로 행위를 표현하는 API 설계 방식
- URI를 통해 자원을 명시하고, HTTP Method를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것
REST 구성
1. 자원(Resource)
- URL로 표현
/users/users/1
2. HTTP 메서드 (행위 표현)
| 메서드 | 의미 | 예시 | | — | — | — | | GET | 조회 | 사용자 목록 조회 | | POST | 생성 | 사용자 생성 | | PUT | 전체 수정 | 사용자 전체 수정 | | PATCH | 부분 수정 | 사용자 일부 수정 | | DELETE | 삭제 | 사용자 삭제 |
- PUT과 PATCH의 차이
- PUT: 자원 전체를 교체
- PATCH: 자원의 일부만 수정
3. 표현(Representation)
- 자원은 보통 JSON 형태로 전달
{
"id":1,
"name":"Kim"
}
4. 무상태성 (Stateless)
- 서버는 이전 요청을 기억하지 않음
- 모든 요청은 필요한 정보를 모두 포함
- 확장성, 안정성에 유리
RESTful API란?
REST 원칙을 잘 지킨 API
- 명확한 URI
- 올바른 HTTP 메서드 사용
- 상태 코드는 상태 코드답게 사용
HTTP 상태 코드
- 잘 설계된 REST API는 URI만 잘 설계된 것이 아닌
- 그 리소스에 대한 응답을 잘 내어주는 것까지 포함
- 응답의 상태코드 값을 명확히 돌려줘야 함
| 코드 | 의미 |
| --- | --- |
| 200 | 성공 |
| 201 | 생성 성공 |
| 400 | 잘못된 요청 |
| 401 | 인증 필요 |
| 403 | 권한 없음 |
| 404 | 자원 없음 |
| 500 | 서버 오류 |
REST API의 장점
- 직관적인 구조
- HTTP 표준 활용
- 프론트/백엔드 분업에 유리
- 다양한 클라이언트 대응 가능
REST API의 단점
- 요청/응답 데이터가 많아질 수 있음
- 복잡한 관계 표현이 어려움
- 실시간 통신에 한계 (→ WebSocket)