• 1xx (Informational): 요청이 수신되어 처리중
• 2xx (Successful): 요청 정상 처리
• 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요
• 4xx (Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음
• 5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함
클라이언트가 주로 보는건 400 500이고, 개발할때는 200, 300을 종종 보게 될 것이다.
클라이언트가 인삭할 수 없는 코드가 나와도, 앞의 백단위 자리수를 보고 적당히 처리해버린다.
거의 안쓴다
200 OK
201 Created
202 Accepted
204 No Content
이 밖에도 몇개 있는데 주로 안쓰는편이다.
리다이렉션
301 Moved Permanently
308 Permanent Redirect
둘다 기능은 똑같지만, 301은 요청 메서드가 get으로 변하고 본문이 제거될 수 있다(대부분)
308은 요청메서드와 본문을 유지한다.
302 Found
303 See Other
307 Temporary Redirect
302의 경우 301처럼 메서드가 get으로 변하고 본문이 제거 될 수 있다. (대부분)
307의 경우 302와 기능은 같으나 리다이렉트 요청시 메서드와 본문을 반드시 유지한다.
303의 경우 메서드만 get으로 바꾼다.
POST로 주문후에 새로 고침으로 인한 중복 주문 방지
POST로 주문후에 주문 결과 화면을 GET 메서드로 리다이렉트
새로고침해도 결과 화면을 GET으로 조회
중복 주문 대신에 결과 화면만 GET으로 다시 요청
• 302 Found = GET으로 변할 수 있음
• 307 Temporary Redirect = 메서드가 변하면 안됨
• 303 See Other = 메서드가 GET으로 변경
307, 303을 권장하지만, 많은 라이브러리들이 302를 기본값으로 써서 크게 문제는 없다.
300 Multiple Choices
304 Not Modified
인증은 되었지만, 인가되지 않은 경우
요청 리소스가 서버에 없는 경우
혹은 클라이언트가 권한부족한 리소스에 접근시 이를 숨기고싶은 경우
서버 내부 문제
서버의 과부화 또는 예정된 작업으로 잠시 욫어 처리 불가
500오류는 진짜 서버에 문제가 생겼을 때 내야지, 아무때나 내버리면 모니터링 프로그램이 혼란스러워한다.