클라이언트가 보낸 요청의 처리 상태를 서버가 알려주는 기능을 의미
1-- : 요청이 수신되어 처리중
2-- : 요청 정상 처리
3-- : 요청을 완료하려면 추가 행동이 필요
4-- : 클라이언트의 오류
5-- : 서버 오류
말 그대로 처리중일때 받을 수 있는 상태코드
200 - OK
201 - Created , 생성 완료
- 요청이 성공하여 새로운 리소스가 생성됨을 의미
- ex) post로 등록
202 - Accepted
- 요청이 접수됐으나 처리는 완료되지 않음
- ex) Batch 처리
204 - No Content
- 요청을 성공적으로 수행, 서버가 클라이언트에게 따로 보낼 메세지가 없음
- ex) post로 저장처럼 데이터의 변동은 있지만, 환경 변경이 필요 없을 때
리다이렉션이란, 클라이언트의 요청으로 인한 서버의 응답에서 location 헤더가 있을 경우, 해당 위치로 자동 이동하는 것
301 - Moved Permanently
308 - Permanent Redirect
308은 리다이렉션을 해도 기존의 method유지, 301은 GET으로 메소드 변환
리소스의 URI가 일시적으로 변경되는 것으로 검색 엔진 등에서 URL을 변경하면 안된다
302 - Found
- 리다이렉트시 요청 메서드가 Get으로 변할수도있음
307 - Temporary Redirect
- 302와 기능은 동일하지만, 기존 메서드와 본문은 유지된다
303 - See Other
- 302와 기능은 같지만 반드시 메소드가 GET으로 변경됨
정리하자면,
- 302는 Get으로 변할 수 있음
- 307은 메소드가 변하지 않음
- 303은 메소드가 Get으로 변함
303,307을 권장하지만, 현재 이미 많은 앱들이 302를 사용 중
Post 주문 후 Redirection 시 다시 Post로 인한 재 주문 방지를 위함
따라서, 주문 후 주문 결과 화면을 Get으로 리다이렉트 하게
기존
요청 -> DB 저장 -> 응답 -> 새로고침으로 인한 요청 -> DB 주문 -> 응답
위 처럼 진행될 경우 새로고침마다 주문 횟수 증가개선
요청 -> DB 저장 -> 응답 -> 자동 리다이렉트(다른 화면으로 이동, Post에서 Get으로 변환) -> 요청 -> DB 조회 -> 응답
오류의 원인이 클라이언트에 있을 경우로, 재시도를 하더라도 실패함
서버 문제이기 때문에 재시도 하면 성공할 가능성 존재