6강 HTTP 상태코드

Donghun Seol·2022년 10월 11일
0

6강 HTTP 상태코드

상태코드

만약 모르는 상태코드가 나타나면?

상위 상태코드로 변환해서 해석함.
299 코드 반환시, 200번대로 해석하고 행동하면 된다.

1** informational

실무에서는 잘 안써요

2** successful

200 OK

요청 성공

201 Created

(POST로)요청 성공해서 새로운 리소스가 생성됨
Location 헤더에 신규 리소스의 URI 포함시켜줌

202 Accepted

요청이 완료되었으나 처리되지 않았음
배치 처리 같은 곳에서 사용
잘 사용하진 않음

204 No Content

서버가 요청을 성공적으로 수행했지만 응답 페이로드 본문에 보낼 데이터가 없다.
웹 문서 편집기에서 저장버튼을 눌렀을 경우

3** redirection

리다이렉션

리다이렉션은 요청을 완료하기 위해 유저 에이전트(=브라우저)의 추가 조치 필요 웹브라우저는 3**번대 응답의 결과에 Location헤더가 있으면, 해당 위치로 자동이동함

리다이렉션의 종류

  • 영구 리다이렉션 : 특정 리소스 URI 영구적으로 이동
  • 일시 리다이렉션 : 일시적인 변경, PRG 패턴
  • 특수 리다이렉션 : 결과 대신 캐시를 사용

영구 리다이렉션 301, 308

리소스의 URI가 영구적으로 이동한 것

  • 301 : 리다이렉트시 메서드가 GET으로 바뀌고 본문이 제거될 수 있음
  • 308 : 리다이렉트시 POST 메서드 유지하고 바디에 담긴 데이터도 유지

일시적 리다이렉션 302, 307, 303

리소스의 URI가 일시적으로 이동한 것, 실무에서는 302만 주로 사용

  • 302 FOUND
    리다이렉트시 메서드가 GET으로 변하고, 본문이 제거될 수 있음(May)
  • 307 Temporary Redirect
    302와 기능은 같지만 메서드와 분문이 유지된다.
  • 303 See Other
    302와 기능이 같지만 메서드가 무조건 GET으로 변경된다.

PRG : POST / Redirect / GET

POST로 주문을 입력한 후 웹 브라우저를 새로고침하면 주문이 중복으로 서버에 들어간다.
이를 방지하기 위해 포스트 요청에 대한 응답으로 302 Found를 준다.

304 Not Modified

캐시를 목적으로 사용한다.
클라이언트에게 리소스가 수정되지 않았음을 알려줘 클라이언트는 로컬 PC에 저장된 캐시를 재사용한다.

4** client error

오류의 원인이 클라이언트에 있음

따라서 같은 요청을 계속 보내도 계속 실패
요청을 수정해야 한다.

400 Bad Request

요청 구문, 메시지 오류, 파라미터가 잘못되거나 API 스펙이 안맞는 경우

401 Unauthorized

클라이언트가 해당 리소스에 대한 인증이 필요함
인증(Authentication) 되지 않음
인증 : 본인이 누구인지 확인하는 것 (로그인)
응답에 WWW-Authenticate 헤더와 함께 인증 방법을 설명

403 Forbidden

서버가 요청을 이해했지만 승인을 거부하는 것
인증 자격은 있지만 권한이 불충분한 경우.
admin이 아닌 사용자가 관리자 페이지 접근하려는 경우

404 Not Found

요청 리소스가 서버에 없음
또는 클라이언트가 권한이 없는 리소스에 접근시 해당 리소스를 숨길때

5** server error

오류의 원인이 서버에 있음

나중에 시간이 지나서 재실행하면 성공할 수 있음

500 Internal Server Error

서버 내부 문제로 오류발생, 일반적으로 사용

503 Service Unavailable

서버거 일시적인 과부하 또는 유지보수 작업으로 요청을 처리할 수 없음
Retry-After 헤더로 얼마뒤에 복구되는지 알 수 있음

5**번 에러는 왠만하면 만들면 안됨.

남발하면 안되고 예외적인 상황에서만 만들어야 한다.

profile
I'm going from failure to failure without losing enthusiasm

0개의 댓글