JAVA & SPRING/HTTP 웹 기본 지식

HTTP 웹 기본 지식 - 5일차(HTTP 상태코드)

눈오는1월 2023. 8. 24. 15:22
728x90

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

보통 100 ~ 500번대 가 존재하는데 백의 자리의 숫자에 의미가 있음

1xx (Informational)-> 요청이 수신되어 처리 중 ( 거의 잘 안 쓰임)

2xx (Successful)-> 요청 정상 처리

3xx (Redirection) -> 요청을 완료하려면 추가 행동이 필요

4xx (Client Error) -> 클라이언트 오류

5xx (Server Error) -> 서버 오류

 

1xx

-> 거의 사용을 하지 않는다.

 

2xx(Successful) 

클라이언트의 요청이 정상적으로 처리가 되면 200번대의 상태 코드가 뜬다.

  • 200 OK
  • 201 Created
  • 202 Accepted
  • 204 No Content

200 OK

보통 클라이언트가 메서드 GET으로 요청했을 때 서버에서 값과 함께 보내준다.

200 OK

201 Created

Created 란 말처럼 요청을 했을때 새로운 게 생성되었다는 것을 의미한다.

201 Created

이때 생성된 리소스는 응답의 Location 헤더 필드로 식별된다 (위 빨간색 화살표 표시)

 

202 Accepted

요청이 접수되었으나 처리가 아직 완료되지 않은 것으로 배치 처리 같은 곳에서 사용 ( 요청 접수 후에 1시간 뒤에 배치 됨)

 

204 No Content

서버가 요청을 성공적으로 수행했지만 Response 할 데이터가 없음

 

3xx (Redirection)

요청을 완료하기 위해 추가적인 조치가 필요하다는 상태 코드이다.

  • 300 Multiple Choices
  • 301 Moved Permanently
  • 302 Found
  • 303 See Other
  • 304 Not Modified
  • 307 Temporary Redirect
  • 308 Permanent Redirect

Redirection 은 Location 헤더가 있으면 Location 위치로 이동하라는 것을 의미한다.

클라이언트는 위치로 이동후에 서버에 GET요청을 보내서 데이터를 받고 사용자에게 보여준다.

 

리다이렉션의 종류로는 3가지가 존재한다.

  • 영구 리다이렉션 - 특정 리소스의 URI가 영구적으로 이동
  • 일시 리다이렉션 - 일시적인 주문 변경
  • 특수 리다이렉션 - 결과 대신 캐시를 사용

이렇게 존재한다.

 

영구 리다이렉션

- 리소스의 URI가 영구적으로 이동, 원래의 URL를 사용 안 할 때

 

-301 Moved Permanently

리다이렉트시 요청 메서드 GET으로 변하고 본문이 제거될 수 도 있음(MAY)

-308 Permanent Redirect

301과 기능은 같으나 메서드가 변하지 않음

 

일시적인 리다이렉션

- 리소스의 URI가 일시적으로 변경

 

-302 Found

리다이렉트시 요청 메서드 GET으로 변하고 본문이 제거될 수 도 있음(MAY)

-307 Temporary Redirect

302와 기능은 같음

기능은 같으나 메서드가 변하지 않음

-303 See Other

302와 기능은 같음

메서드가 GET으로 무조건 변경

 

PRG -> Post/Redirect/Get

예를 들어 POST로 주문이 요청하고 웹 브라우저를 새로고침 하면 중복 주문이 될 수 있음 이러한 행위를 방지할 수 있음

 

기타 리다이렉션

-300 Multiple Choices -> 안 씀

-304 Not Modified 

캐시를 목적으로 사용(클라이언트에게 리소스가 수정되지 않았음을 알려줘서 캐시로 리다이렉트 하게 끔 함) 로컬 캐시를 사용하게 하므로 응답에 메시지 바디를 포함하면 안 된다.

 

4xx (Client Error)

말 그대로 클라이언트에 오류가 있음

클라이언트에서 오류가 발생했으므로 해당 방식으로 재시도했을 때 성공할 수 없음

ex) 요청 파라미터가 잘못되었거나, API 스펙이 맞지 않을 때

 

  • 401 Unauthorized
  • 403 Forbidden
  • 404 Not Found

이렇게 있음

 

-401 Unauthorized

클라이언트가 해당 리소스에 대한 인증이 필요함

ex) 로그인되어 있어야 확인할 수 있거나 등등

 

-403 Forbidden

서버가 요청을 이해했지만 거부했을 때

ex) 관리자페이지 접근할 때 일반 회원 자격으로는 접근할 수 있음 (어드민 등급만 접근이 가능함)

 

-404 Not Found

요청 리소스가 서버에 없거나 서버가 클라이언트로부터 리소스를 숨기고 싶을 때 발생

 

 

5xx (Server Error)

서버 문제로 발생

서버에 문제가 있으므로 서버가 복구되거나 등등의 이유로 문제가 해결되면 같은 값을 보낼을때, 문제가 해결될 수 있음

 

  • 500 Internal Server Error
  • 503 Service Unavailable

-500 Internal Server Error

서버 내부 문제로 오류 발생

애매하면 500 오류가 뜸

 

-503 Service Unavailable

서버가 과부하나 예정된 작업으로 지금 요청을 처리할 수 없음

Retry-After 헤더 필드로 얼마 뒤에 복구되는지 보낼 수 도 있음

 

 

 

 

 

 

 

 

728x90