클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능
클라이언트가 인식할 수 없는 상태코드를 서버가 반환하면?
클라이언트는 상위 상태 코드로 해석해서 처리
미래에 새로운 상태코드가 추가되어도 클라이언트를 변경하지 않아도 됨
예) 299 → 2xx
거의 사용하지 않으므로 생략
웹브라우저는 3xx 응답 결과에 Location 헤더가 있으면, Location 위치로 자동 이동 (리다이렉트)
예) /members → /users
예) /event → /new_event
301, 308
리소스의 URI 영구적 이동
원래 URL 사용 하면 안됨, 검색 엔진 등에서도 변경 인지
301: 본문 내용 삭제 /get으로 변경
308: 본문 내용 그대로 가져감 /post
302, 307, 303
리소스의 URI가 일시적으로 변경
따라서 검색엔진 등에서 URL 을 변경하면 안됨
예) 주문 완료 후 주문 내역 화면으로 이동
POST로 주문후에 웹 브라우저를 새로고침하면?
새로고침은 다시 요청
중복 주문이 될 수 있다.
302를 사용해도 상관 없다
결과 대신 캐시를 이용
304 Not modified
400 Bad Request
클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없음
예) 요청구문, 메시지 오류, 요청 파라미터 잘못되거나 API 스펙이 안맞을 때
401 Unauthorized
인증 되지 않음
401 오류 발생시 응답에 WWW-Authenticate 헤더와 함께 인증 방법을 설명
인증 (Authentification) : 본인이 누구인지 확인( 로그인)
인가 (Authorization) : 권한 부야 ( ADMIN 권한 처럼 특정 리소스에 접근 할 수 있는 권한, 인증이 있어야 인가가 있음)
오류 메시지가 Unauthorized 이지만 인증 되지 않음
403 Forbidden
서버가 요청을 이해했지만 승인을 거부함
주로 인증 자격 증명은 있지만, 접근 권한이 불충분
404 Not Found
요청 리소스가 서버에 없음
또는 클라이언트가 권한이 부족한 리소스에 접근할 때 해당 리소스를 숨기고 싶을 때
서버 문제로 오류 발생
서버에 문제가 있기 때문에 재시도 하면 성공할 수 도 있음
500: 서버 내부 문제로 오류
503: 서비스 이용 불가 (은행 점검시간?)
서버가 일시적인 과부하 또는 예정된 작업으로 잠시 요청을 처리할 수 없음
고객의 잔고가 부족하다, 20세 이상에게만 제공하는 서비스인데 15세가 들어옴 → 500 에러를 내면 안됨
널포인트 익셉션, 서버가 내려감 → 500에러