728x90
[김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 학습 후 정리한 내용입니다.]
HTTP 상태코드
HTTP 상태 코드란 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능이다. 대표적으로 5가지의 종류가 있으며, 첫 숫자가 뭘로 시작하느냐에 따라 의미가 달라진다.
- 1xx (Informational): 요청이 수신되어 처리중
- 2xx (Successful): 요청 정상 처리
- 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요
- 4xx (Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음
- 5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함
1xx (요청이 수신되어 처리중)
거의 사용하지 않으므로 생략한다.
2xx (요청을 성공적으로 처리)
1) 200 OK
- 요청이 성공했을 때
2) 201 Created
- 요청이 성공하여 새로운 리소스가 생성됐을 때
- 생성된 리소스는 응답의 Location 헤더 필드로 식별할 수 있다.
3) 202 Accepted
- 요청이 접수되었으나 처리가 완료되지 않았을 때
- ex) 요청 접수 후 1시간 뒤에 배치 프로세스가 요청을 처리하는 경우
4) 204 No Content
- 서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없을 때
- ex) 웹 문서 편집기에서 save를 누르는 경우 save 클릭의 결과로 아무 내용이 없어도 되고, 같은 화면을 유지해야 되는 경우
3xx (요청을 완료하기 위해 유저의 추가 조치 필요)
웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동된다.(리다이렉트)
1) 301 Moved Parmenently
- 요청한 리소스가 새로운 위치로 영구적으로 이동되었을 때
- 영구 리다이렉션
- 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있다.
2) 308 Permanent Redirect
- 영구 리다이렉션(301과 기능은 같다.)
- 리다이렉트시 요청 메서드와 본문이 유지된다.
3) 302 Found
- 요청한 리소스가 새로운 위치로 일시적으로 이동되었을 때
- 일시 리다이렉션
- 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있다.
4) 307 Temporary Redirect
- 일시 리다이렉션(302와 기능은 같다.)
- 리다이렉트시 요청 메서드와 본문이 유지된다.
5) 303 See Other
- 일시 리다이렉션(302와 기능은 같다.)
- 리다이렉트시 요청 메서드가 GET으로 변한다.
6) 304 Not Modified
- 클라이언트가 캐시된 리소스를 요청했으며, 이 리소스가 수정되지 않았을 때 사용된다.
- 304 응답은 응답에 메시지 바디를 포함하면 안된다. (로컬 캐시를 사용해야 하므로)
- 조건부 GET, HEAD 요청 시 사용된다.
4xx (클라이언트 오류 발생)
1) 400 Bad Request
- 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없을 때
- 요청 구문, 메시지 등 오류
- ex)요청 파라미터가 잘못됐거나, API 스펙이 맞지 않을 때
2) 401 Unauthorized
- 클라이언트가 해당 리소스에 대한 인증이 필요할 때
- 참고 - 인증(Authentication) : 본인이 누구인지 확인(로그인) 인가(Authorization) : 권한부여(특정 리소스에 접근할 수 있는 권한)
- 오류 메시지가 Unauthorized이지만 인증 되지 않음.(아쉬운 에러 이름..)
3) 403 Forbidden
- 서버가 요청을 이해했지만 승인을 거부했을 때
- ex) ADMIN이 아닌 사용자가 로그인하여 ADMIN등급의 리소스에 접근하는 경우
4) 404 Not Found
- 요청 리소스를 찾을 수 없을 때
- 클라이언트가 권한이 부족한 리소스에 접근할 경우 리소스를 숨기고 싶을 때도 사용될 수 있다.
5xx (서버 문제로 오류 발생)
1) 500 Internal Servcer Error
- 서버 문제로 오류가 발생했을 때
- 애매하면 500오류를 발생시킨다.
- 비즈니스 로직 상의 에러는 500으로 내서는 안된다. 데이터베이스가 다운됐다던지, NullPointException이 발생하는 경우 등과 같은 실제 서버 상의 오류가 있을 때 500 에러를 반환한다.
2) 503 Service Unavailable
- 서비스가 이용 불가할 때
- 서버가 일시적인 과부하 또는 예정된 작업으로 잠시 요청을 처리할 수 없을 때
- 서버 오류는 예상 못하는 경우가 많으므로 503을 실제로 보기 힘들다고 한다.
728x90
'CS > 네트워크' 카테고리의 다른 글
[Network] HTTP 캐시 관련된 헤더 (0) | 2023.05.17 |
---|---|
[Network] HTTP 일반정보, 쿠키에 관련된 헤더 (1) | 2023.05.17 |
[Network] HTTP 메서드와 활용 (0) | 2023.05.13 |
[Network] HTTP의 구조와 특징 정리 (0) | 2023.05.11 |
[Network] 인터넷 네트워크 정리 (0) | 2023.05.10 |
댓글