HTTP 상태 코드
클라이언트가 서버에 HTTP 요청을 보내면, 서버는 응답 메시지로 처리 결과를 알려 줍니다. 이때 서버는 요청의 처리 결과를 쉽게 알 수 있도록 세 자리 숫자 코드를 함께 반환합니다. 이를 HTTP 상태 코드(Status Code)라고 합니다.
상태 코드는 요청이 성공했는지, 클라이언트의 요청에 문제가 있었는지, 서버에서 오류가 발생했는지 등을 나타냅니다. 클라이언트는 상태 코드를 보고 다음 동작을 결정할 수 있습니다. 예를 들어 200을 받으면 응답 데이터를 화면에 보여 주고, 404를 받으면 요청한 데이터를 찾을 수 없다는 안내를 표시할 수 있습니다.
예를 들어 서버가 요청을 성공적으로 처리했다면 응답 메시지의 시작 줄은 아래처럼 시작합니다.
HTTP/1.1 200 OK
여기서 200이 상태 코드이고, OK는 그 의미를 사람이 읽기 쉽게 나타낸 상태 메시지입니다.
상태 코드 분류
HTTP 상태 코드는 첫 번째 숫자에 따라 크게 다섯 가지 범주로 나뉩니다.
| 범주 | 의미 | 예시 |
|---|---|---|
1xx |
요청 처리 중 보내는 임시 정보 | 101 Switching Protocols |
2xx |
요청 처리 성공 | 200 OK, 201 Created |
3xx |
다른 주소로 이동 | 301 Moved Permanently |
4xx |
클라이언트 요청에 문제가 있음 | 400 Bad Request, 404 Not Found |
5xx |
서버 오류 | 500 Internal Server Error |
1xx와 3xx 상태 코드는 연결 과정이나 다른 주소로의 이동에 주로 사용되며, 웹 브라우저나 HTTP 클라이언트 라이브러리가 자동으로 처리하는 경우가 많습니다. 따라서 웹 API를 만들 때는 주로 2xx, 4xx, 5xx 상태 코드를 직접 다루게 됩니다.
자주 사용하는 상태 코드
| 상태 코드 | 의미 | 사용 예시 |
|---|---|---|
200 OK |
요청을 성공적으로 처리함 | 게시글 목록 또는 특정 게시글 조회 |
201 Created |
새로운 자원을 성공적으로 생성함 | 새 게시글 또는 회원 가입 생성 |
204 No Content |
요청은 성공했지만 응답 본문이 없음 | 게시글 삭제 성공 |
400 Bad Request |
요청 형식이나 값이 올바르지 않음 | 잘못된 형식의 데이터를 전송 |
401 Unauthorized |
인증 정보가 없거나 올바르지 않음 | 로그인하지 않은 사용자가 인증이 필요한 API 요청 |
403 Forbidden |
인증은 되었지만 권한이 없음 | 일반 사용자가 관리자 전용 API 요청 |
404 Not Found |
요청한 자원을 찾을 수 없음 | 존재하지 않는 게시글 조회 |
422 Unprocessable Content |
요청 형식은 맞지만 데이터 검증에 실패함 | 필수 값이 빠진 게시글 생성 요청 |
500 Internal Server Error |
서버가 요청을 처리하는 중 예상하지 못한 오류가 발생함 | 서버 코드의 오류 또는 처리 실패 |
502 Bad Gateway |
서버가 다른 서버로부터 올바른 응답을 받지 못함 | 프록시 서버가 뒤쪽 서비스와 통신 실패 |
503 Service Unavailable |
서버가 일시적으로 요청을 처리할 수 없음 | 서버 점검 또는 과도한 트래픽 |
REST API 상태 코드
REST API에서는 요청 결과에 맞는 상태 코드를 응답하는 것도 중요합니다. 상태 코드만 보아도 클라이언트가 요청 결과를 빠르게 파악할 수 있기 때문입니다.
| HTTP 요청 | 성공 상태 코드 | 의미 |
|---|---|---|
GET /posts |
200 OK |
게시글 목록을 성공적으로 조회함 |
GET /posts/1 |
200 OK |
1번 게시글을 성공적으로 조회함 |
POST /posts |
201 Created |
새 게시글을 성공적으로 생성함 |
DELETE /posts/1 |
204 No Content |
1번 게시글을 성공적으로 삭제함 |
반대로 존재하지 않는 게시글에 GET /posts/999 요청을 보내면 서버는 404 Not Found를 응답할 수 있습니다.
실습 과제
다음 문장이 맞으면 O, 틀리면 X를 선택하세요.
200 OK는 서버가 요청을 성공적으로 처리했다는 뜻이다.404 Not Found는 서버 내부에서 예상하지 못한 오류가 발생했다는 뜻이다.401 Unauthorized는 사용자가 인증되었지만 해당 작업의 권한이 없다는 뜻이다.
정답·해설
- O —
200 OK는 요청이 성공적으로 처리되었음을 나타냅니다. - X —
404 Not Found는 요청한 자원을 찾을 수 없다는 뜻입니다. 서버 내부의 예상하지 못한 오류는 보통500 Internal Server Error를 사용합니다. - X —
401 Unauthorized는 인증 정보가 없거나 올바르지 않은 경우입니다. 인증은 되었지만 권한이 없는 경우는403 Forbidden을 사용합니다.