- 상태코드는 암기과목이 아니다!
- 상황을 보고 코드를 매칭하는 것이 중요!
01. 필수 8개
| 코드 | 의미 | 사용상황 |
|---|
| 200 | OK | 조회 성공 |
| 201 | Created | POST 생성 성공 |
| 204 | No Content | DELETE 성공, body 없음 |
| 400 | Bad Request | 파라미터/유효성 실패 |
| 401 | Unauthorized | 로그인/토큰 없음 |
| 403 | Forbidden | 권한 부족 |
| 404 | Not Found | 존재하지 않는 자원 |
| 500 | Server Error | 서버 내부 예외 |
@DeleteMapping("/{id}")
public ResponseEntity<Void> deleteTodo(@PathVariable Long id) {
todoService.deleteTodo(id);
return ResponseEntity.noContent().build(); //204 상태코드 반환!
}
- body 없이 성공 처리 : 204 표준
- 즉, DELETE 시 204를 이용하는 이유는 결과 body가 필요 없는 REST 표준 응답 방식이기 때문이다.
- 만약 없는 id를 삭제하면, 404 처리!
02. 잘 구분해야할 코드들
02-1. 401 vs 403
| 코드 | 의미 | 사용상황 |
|---|
| 401 | 인증 실패 | 로그인/토큰 없음 |
| 403 | 인가 실패 | 로그인은 했지만, 접근 권한이 없음 |
02-2. 200 vs 204
| 코드 | 설명 | 사용상황 |
|---|
| 200 | body 있음 | 수정/조회 후 결과 반환 |
| 204 | body 없음 | 삭제/수정 후 body 불필요 |
03. CRUD 기준
Create -> 201
Read -> 200
Update -> 200 / 204
Delete -> 204
- CRUD, 인증/인가, 리소스 존재 여부, 서버/클라이언트 책임만 기준 삼으면 8개로 API 전체를 설계할 수 있다.