모든 개발자를 위한 HTTP 웹 기본 지식 - 김영한 | 섹션6
1xx 요청 처리중. 거의 사용하지 않음2xx 요청 정상 처리3xx 리다이렉트. 요청 완료하려면 추가 행동 필요4xx 클라이언트 오류5xx 서버 오류영구 리다이렉션 특정 리소스의 URI가 영구적으로 이동 ex) /members -> /users일시 리다이렉션 ex) 주문 완료 후 주문 내역 화면으로 이동할 때특수 리다이렉션 결과 대신 캐시 사용301 리다이렉트 요청 메서드가 GET으로 변하고 본문이 제거될 수 있음308 301과 기능은 동일하나 리다이렉트 요청 메서드와 본문 유지302 리다이렉트 요청 메서드가 GET으로 변하고 본문이 제거될 수 있음307 302과 기능 동일. 메서드와 본문은 유지303 302과 기능 동일. 메서드만 GET으로 반드시 변경Post/Redirect/Get로 이를 해결할 수 있음200 OK 응답 -> /order 결과 화면에서 새로고침 -> 주문 데이터 한 건이 더 들어옴
- POST로 주문후에 새로고침으로 인한 중복 주문 방지
- POST로 주문후에 주문 결과 화면을 GET 메서드로 리다이렉트
- 새로고침해도 결과화면을 GET으로 조회
- 중복 주문 대신에 결과 화면만 GET으로 다시 요청
302 Found | Location: /order-result/19 응답 -> 클라이언트는 /order-result/19로 자동 리다이렉트하고, 메서드가 GET으로 바뀌면서 /order-result/19에 GET 요청을 보냄(실수로 새로고침하더라도 GET요청만 하게 됨) -> 서버는 주문 데이터 조회해서 200 OK 응답300 안씀304 캐시를 목적으로 사용400 클라이언트가 잘못된 요청을 함 ex) 파라미터 오류, API 스펙 오류401 인증 필요403 서버가 요청을 이해했지만 승인을 거부함 ex) 로그인했지만 접근 불가한 리소스에 접근했을 때404 요청 리소스가 서버에 없음. 또는 리소스를 숨기고 싶을 때500 서버 내부 오류. 애매하면 전부 500503 서버 과부하 또는 예정된 작업(retry-after)