[HTTP] 상태 코드

Local Gaji·2023년 12월 31일

🎈 200번 대

성공

코드의미
200 OK요청 성공
201 Created요청 성공해서 새로운 리소스가 생성됨
202 Accepted요청이 접수됐으나 처리가 아직 완료되지 않음
204 No Content요청 성공했지만 응답 메세지로 보낼 데이터가 없음
저장 버튼을 눌려도 화면이 변하지 않아야 할 때

200 만 사용해도 된다

🎈 300번 대

리다이렉션
요청을 완료하기 위해 클라이언트의 추가 조치가 필요한 경우


🔰 영구 리다이렉션

특정 리소스의 URI가 완전히 이동했을 때
안쓰는 경로로 요청이 왔을 때 새로운 경로(Location)로 안내하면 클라이언트는 이 경로로 자동 리다이렉트 함

상태 코드의미
301POST 요청이 리다이렉트 시 GET으로 변하고 요청 메세지가 제거될 수 있음
메세지 바디는 다시 보내야 함
308POST 요청이 리다이렉트 시 POST 로 유지되고 요청 메세지도 유지됨

🔰 일시 리다이렉션

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

상태 코드의미
302 FoundPOST 요청이 리다이렉트 시 GET으로 변하고 요청 메세지가 제거될 수 있음
303 See Other리다이렉트 시 무조건 GET으로 변경됨
307 Temporary RedirectPOST 요청이 리다이렉트 시 POST 로 유지되고 요청 메세지도 유지됨

PRG (Post Redirect Get) 패턴
중복 POST 요청을 방지하기 위해 결과 조회 요청으로 Redirect
새로고침해도 재요청이 발생하지 않음

서버에서 중복 요청 시 오류를 발생시켜야 하지만, PRG 패턴을 사용하면 중복 요청 자체를 줄일 수 있다


🔰 특수 리다이렉션

캐시 기간이 아직 유효해서 응답 결과를 보내줄 필요가 없을 때

상태 코드의미
304 Not Modified캐시가 변경되지 않았다는 의미

🎈 400번 대

오류의 원인이 클라이언트에 있을 때 (요청을 잘못 했을 때)
재시도를 해도 실패한다

상태 코드의미
400 Bad Request요청 구문, requestBody 등의 오류
401 Unauthorized인증(로그인)이 되지 않음
응답에 WWW-Authenticate 헤더와 함께 인증 방법을 설명해서 보내줘야 한다.
403 Forbidden로그인은 했지만 접근 권한이 없는 경우
ex) 관리자 기능에 일반 유저가 접근했을 때
404 Not Found요청 리소스가 서버에 없을 때
403 오류를 숨기고 싶을 때

🎈 400번 대

오류의 원인이 서버에 있을 때
재시도를 하면 성공할 수도 있다.

상태 코드의미
500 Internal Server Error서버에서 발생한 오류
503 Service Unavailable서버가 일시적 과부하 또는 작업 중
Retry-After 헤더 필드로 복구 예정 시간을 알려줄 수 있음

400대 오류(클라이언트 오류 또는 비즈니스 로직에서 예외 케이스)를 500으로 보내면 안된다.

0개의 댓글