HTTP 상태 코드
클라이언트가 보낸 요청의 처리 상태를 "응답"(Response)에서 알려주는 기능
: 요청이 수신되어 처리중 (거의 사용 X)
2. 2XX (Successful)
: 요청 정상 처리
- 200 : OK
- 201 : Created
- 202 : Accepted
- 204 : No Content
3. 3XX (Redirection)
: 요청을 완료하려면 클라이언트 프로그램의 추가 행동이 필요
- 리다이렉션 이해
- 웹 브라우저는 3XX 응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동 (리다이렉트)
영구 리다이렉션 (301, 308) (잘사용 X)
- 리소스의 URI가 영구적으로 이동
- 원래의 URL를 사용 X
- 301 Moved Permanently
- 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될수있음
- 308 Permanent Redirect
- 301과 기능은 같음
- 리다이렉트시 요청 메서드와 본문 유지 (처음 Post를 보내면 리다이렉트도 보냄)
일시적인 리다이렉션
- 리소스의 URI가 일시적으로 변경
- 따라서 검색 엔진 등에서 URL을 변경하면 안됨
- 302 (!! 중요 307, 303 보다 많이 쓰임 )
- 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될수있음(MAY)
- 307
- 302와 기능은 같음
- 리다이렉트시 요청 메서드와 본문 유지 (요청 메서드를 변경하면 안된다)
- 303
- 302와 기능은 같음
- 리다이렉트시 요청 메서드가 GET으로 변경
일시적인 리다이렉션 (POST/Redirect/GET) - 예시
- POST로 주문후에 웹 브라우저를 새로고침하면 ?
- 새로고침은 다시 요청
- 중복 주문이 될 수 있다.
- PRG 이후 리다이렉트
- URL이 이미 POST -> GET으로 리다이렉트 됨
- 새로 고침해도 GET으로 결과 화면만 조회
- 304
- NOT Modified
- 캐시를 목적으로 사용
- 클라이언트에게 리소스가 수정되지 않았음을 알려준다, 로컬 PC에 저장된 캐시를 사용 (캐시로 리다이렉트 한다.)
- 304 응답은 응답에 메시지 바디를 포함하면 안된다.
4. 4XX (Client Error)
: 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할수 없음
5. 5XX (Server Error)
: 서버 오류, 서버가 정상 요청을 처리하지못함 (!! 비즈니스 로직에서 오류를 내면안됨, 진짜 서버에 문제가 있을경우 5XX 에러)
- 서버에 문제가 있기 때문에 재시도 하면 성공할수도 있음(복구가 되거나 등등)
만약 모르는 상태 코드가 나타나면 ?
- 클라이언트는 상위 상태코드로 해석해서 처리
- 미래에 새로운 상태 코드가 추가되어도 클라이언트를 변경하지않아도됨
- 예 )
- 299 ? - > 2XX (Successful)
- 451 ? - > 4XX (Client Error)
- 589 ? - > 5XX (Server Error)