REST(Representational State Transfer)는 HTTP 위에서 네트워크로 연결된 웹 API 서비스를 설계하기 위한 아키텍처 스타일입니다.
HTTP 메서드 및 의미론
| 메서드 | 대상 작업 | 안전 | 멱등성 |
|---|---|---|---|
GET |
리소스 표현 조회 | 예 | 예 |
POST |
새 하위 리소스 생성 | 아니오 | 아니오 |
PUT |
리소스 표현 전체 교체 | 아니오 | 예 |
PATCH |
리소스 속성 부분 업데이트 | 아니오 | 아니오 |
DELETE |
리소스 삭제 | 아니오 | 예 |
HEAD |
응답 본문 없이 헤더만 조회 | 예 | 예 |
OPTIONS |
엔드포인트에서 지원하는 HTTP 메서드 조회 | 예 | 예 |
주요 HTTP 응답 상태 코드
성공 (2xx)
200 OK: 요청 성공 (응답 본문에 표현이 포함됨).201 Created: 리소스가 성공적으로 생성됨 (Location헤더가 URI를 나타냄).202 Accepted: 비동기 처리를 위해 요청이 수락됨.204 No Content: 작업 성공, 반환되는 응답 본문 없음 (DELETE에서 흔히 사용).
클라이언트 오류 (4xx)
400 Bad Request: 잘못된 구문, 유효하지 않은 매개변수 또는 유효성 검사 실패.401 Unauthorized: 인증 정보가 누락되었거나 유효하지 않음.403 Forbidden: 인증되었으나 리소스에 접근할 권한이 없음.404 Not Found: 리소스 URI가 존재하지 않음.409 Conflict: 요청이 현재 리소스 상태와 충돌함 (예: 고유 키 중복).422 Unprocessable Entity: 구문은 올바르나 의미론적 도메인 유효성 검사에 실패함.429 Too Many Requests: 요청 속도 제한(Rate Limit) 초과.
서버 오류 (5xx)
500 Internal Server Error: 서버 측에서 처리되지 않은 일반 오류.502 Bad Gateway: 업스트림 서버가 유효하지 않은 응답을 반환함.503 Service Unavailable: 서버가 과부하 상태이거나 점검 중임.
표준 JSON 오류 응답 형식
{
"error": {
"code": "VALIDATION_ERROR",
"message": "The email address provided is already registered.",
"details": [
{
"field": "email",
"issue": "unique_constraint_violated"
}
]
}
}