Tech

Diary

Lecture

About Me

개발중

HTTP 상태코드

JeongSeulho

2024년 12월 20일

준비중...
클립보드로 복사

200번대(성공)

  • 200 OK : 요청 성공
  • 201 Created : 요청 성공해 새로운 리소스 생성
    • Location 헤더로 생성된 리소스의 URI 전달
  • 202 Accepted : 요청 접수됨, 아직 완료되지 않음
    • 요청 후 일정 시간 이후에 처리되는 경우
  • 204 No Content : 요청 성공, 응답 바디로 보낼 데이터가 없음

300번대(리다이렉션, 클라이언트의 추가적인 처리가 필요)

  • 리다이렉션은 어떤 응답에 브라우저가 자동으로 다시 요청을 보내는 것
  • 브라우저는 300번대 응답의 Location 헤더가 있으면, 해당 Location으로 자동 이동 즉, GET 요청(리다이렉트)

영구 리다이렉션

  • 특정 리소스의 URI가 영구적으로 이동
    • /users -> /members로 변경됨
  • 301 Moved Permanently : 리다이렉션 요청 메서드가 GET으로 변경, body가 제거될 수 있음
  • 308 Permanent Redirect : 리다이렉션 요청 메서드와 body가 유지됨

영구 리다이렉션 예시

  1. 유저의 GET /users 요청
  2. 301 Moved Permanently 응답, Location 헤더에 /members 전달 => users 리소스가 영구적으로 /members로 이동했다고 알림
  3. 브라우저는 자동으로 GET /members 요청(리다이렉션 요청)

일시적 리다이렉션

  • 리소스의 URI가 일시적으로 변경
  • 302 Found : 리다이렉션 요청 메서드가 GET으로 변경, body가 제거될 수 있음
  • 307 Temporary Redirect : 리다이렉션 요청 메서드와 body가 유지됨
  • 303 See Other : 리다이렉션 요청 메서드가 GET으로 변경

브라우저의 새로고침

  • 브라우저의 새로고침은 현재 페이지를 다시 불러오는 것
  • 대부분의 경우 현재 주소창의 URL에 GET 요청으로 다시 요청
  • 만약 현재 페이지가 POST 요청으로 반환된 text/html 응답이라면, 현재 페이지를 다시 불러오기위해 POST 요청을 보냄
    • 새로고침에서 POST를 2번 보내는 것을 방지하기 위해 PRG(Post/Redirect/Get) 패턴 사용

일시적 리다이렉션 예시(PRG 패턴)

  1. 유저의 POST /order 요청
  2. 302 Found 응답, Location 헤더에 /order-result 전달
  3. 브라우저는 자동으로 GET /order-result 요청(리다이렉션 요청) => 이후 새로고침에도 POST 요청을 보내지 않음

기타 리다이렉션

  • 304 Not Modified : 클라이언트에게 리소스가 수정되지 않았음을 알림(캐시 쓰라고 알림)
    • 304 응답은 응답 바디가 없음
    • 조건부 GET, HEAD 요청에 대한 응답

400번대(클라이언트 오류)

  • 400 Bad Request : 클라이언트가 잘못된 요청을 보냄
    • 요청 파라미터가 잘못되었거나, API 스펙이 맞지 않음
  • 401 Unauthorized : 해당 리소스에 접근하기 위한 인증이 필요함(인증되지 않음, 로그인 필요)
  • 403 Forbidden : 해당 리소스에 접근 권한이 없음, 인가되지 않음
  • 404 Not Found : 요청한 리소스를 찾을 수 없음 또는 클라이언트에 리소스 숨김

500번대(서버 오류)

  • 500 Internal Server Error : 서버 내부 오류(사유는 다양)
  • 503 Service Unavailable : 서버가 일시적인 과부하 및 점검으로 잠시 요청을 처리할 수 없음
    • Retry-After 헤더로 얼마 뒤에 복구되는지 알리기 가능