HTTP 상태코드

성호창·2022년 3월 28일

해당 글은 인프런 김영한님의 영상을 보고 정리한 글입니다. 출처

상태코드

클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능

1xx (Informational)

요청이 수신되어 처리중, 거의 사용하지 않음

2xx (Successful)

요청 정상 처리

  • 200 OK -> 요청 성공적 수행
  • 201 Created ->클라이언트의 요청을 가지고 서버 쪽에서 새로운 리소스 생성
  • 202 Accepted ->요청이 접수되었으나 아직 처리가 완료되지는 않음(요청 접수 후 1분 뒤에 배치 프로세스가 요청을 처리하여 완료함)
  • 204 No Content -> 서버가 요청을 성공적으로 수행했으나, 응답 본문에 보낼 데이터가 없음

3xx (Redirection)

요청을 완료하려면 추가 행동 필요
3xx 응답 결과에 Location 헤더가 있으면 Location 위치로 자동 redirect

redirection 종류

  • 영구 리다이렉션 : 특정 리소스의 URI가 영구적으로 이동
    원래 URL을 사용하지 않음,검색 엔진 등에서도 변경 인지
  • 일시적인 리다이렉션 : 특정 리소스의 URI가 일시적으로 변경(PRG패턴), 자주 사용
  • 특수 리다이렉션 : 캐시 사용
  • 301 Moved Permanently
    영구 리다이렉션 -> 리다이렉트 요청 메서드가 GET으로 바뀌고 본문 제거될 수 있음
  • 302 Found
    일시적인 리다이렉션 -> 리다이렉트시 요청 메소드가 GET으로 변하고,본문이 제거될 수 있음.
    303을 권장하지만 많은 애플리케이션 라이브러리들이 302를 기본값으로 사용
  • 303 See Other
    일시적인 리다이렉션 ->리다이렉트시 요청 메소드가 GET으로 변경, 302와 기능 동일
  • 304 Not Modified
    캐시 목적으로 사용
    클라이언트에게 서버가 리소스가 변경되지 않음을 알려줌 -> 클라이언트는 PC에 저장된 캐시를 재사용(캐시로 리다이렉트)
    응답에 메시지 바디를 포함하면 안됨(로컬 캐시를 사용해야 해서)
  • 307 Temporary Redirect
    일시적인 리다이렉션 -> 리다이렉트시 요청 메소드와 본문 유지
  • 308 Permanent Redirect
    영구 리다이렉션 -> 301과 기능 같음 BUT, 리다이렉트시 요청 메서드와 본문 유지됨(처음 POST로 요청하면 리다이렉트도 POST메서드로 유지)

4xx (Client Error)

클라이언트 오류,잘못된 문법 등으로 인해 서버가 요청을 수행하는 것이 불가능 -> 복구 불가능
오류의 원인이 클라이언트

  • 400 Bad Request
    클라이언트가 잘못된 요청해서 서버가 요청을 처리할 수 없는 경우
    ex)요청 파라미터가 잘못됨(typeMismatch), api스펙이 맞지 않을 때
  • 401 Unauthorized
    클라이언트가 해당 리소스에 대해 인증필요
    401 오류 발생시 WWW-Authenticate 헤더와 함께 인증 방법을 설명
  • 403 Forbidden
    서버가 요청을 이해했지만 승인 거부
    자격증명은 있지만 접근 권한이 불충분한 경우
  • 404 Not Found
    요청 리소스가 서버에 없음 or 클라이언트가 접근 권한 부족한 리소스에 접근할 경우 리소스 숨기고 싶은 경우

5xx (Server Error)

서버오류, 서버가 정상 요청을 처리하지 못함. -> 나중에 똑같은 요청을 클라이언트가 보내면 성공할 가능성이 있음(복구 가능 -> db가 꺼져있는 경우 등)
오류의 원인이 서버

  • 500 Internal Server Error
    서버 문제로 오류 발생, 애매하면 500 오류로 처리
  • 503 Service Unavailable
    서비스 이용 불가, 서버가 일시적 과부하/예정된 작업으로 잠시 요청 처리가 되지 않는 경우

0개의 댓글