HTTP

HTTP 상태 코드

keepgoing 2021. 12. 1. 01:42

2xx(Successful)

  • 200 OK
  • 201 Created
    • 요청에 성공하여 새로운 리소스가 생성
  • 202 Accepted
    • 요청이 접수되었으나 처리가 완료되지 않음
    • 배치 처리 같은 곳에서 사용
    • 예) 요청 접수 후 1시간 뒤에 배치 프로세스가 요청을 처리
  • 204 No Content
    • 서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없음
    • 문서 편집기에서 아무 내용도 입력하지 않았지만 save가 가능한 경우
      • 성공을 인식하기 위해 사용

3xx(Redirection)

  • 302 Found
    • 리다이렉트시 요청 메서드가 GET으로 변환, 본문(메시지 바디)이 제거될 수 있음(아마도)
  • 307 Temporary Redirect
    • 302와 기능은 같음
    • HTTP 메서드와 본문 유지
    • HTTP 메서드와 메시지 바디를 유지해야할 때 사용
  • 304 See Other
    • HTTP 메서드를 GET으로 확실하게 변경

PRG(Post/Redirect/Get)

  • 302 또는 304를 이용해 중복 상품주문을 방지

304 Not Modified

  • 캐시를 목적으로 사용
  • 요청하는 정보가 이미 디스크(로컬PC)에 저장되어있을 경우(캐시되어있을 경우) 브라우저는 요청받은 데이터가 변경되었는지 확인하고 변경되지 않았다면 응답 코드로 304를 리턴한다. 즉, 데이터가 변경되었다면 변경된 데이터를 응답으로 보내게 된다.

4xx (Client Error)

  • 400 Bad Request
    • 클라이언트의 잘못된 요청으로 인한 에러
    • 요청 구문, 메시지 등등의 오류
    • ex) 요청 파라미터가 잘못되었거나, API 스펙이 맞지 않을 때
  • 401 Unauthorized
    • 클라이언트가 해당 리소스에 대한 인증이 필요함
    • 인증되지 않은 경우(로그인 되지 않은 경우) 에러
  • 403 Forbidden
    • 인증 자격은 있지만 인가 받지 못한 경우
  • 404 Not Found
    • 요청 리소스를 찾을 수 없음
    • 또는 권한이 부족한(인가 받지 않은) 사용자가 리소스에 접근할 때, 해당 리소스를 숨기고 싶을 때

5xx (Server Error)

  • 서버 문제로 오류 발생
  • 서버의 문제기 때문에 재시도 하면 성공할 수 있음(복구가 되거나 등등)
  • 500 Internal Server Error
    • 서버 내부 문제로 오류 발생
    • 애매하면 500 오류
    • 웬만하면 500 에러로 처리하지 않고, 4xx 에러로 처리하는게 좋음