1xx (Information)
: 요청이 수신되어 처리중2xx (Successful)
: 요청 정상 처리3xx (Redirection)
: 요청을 완료하려면 추가 행동이 필요4xx (Client Error)
: 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음5xx (Server Error)
: 서버 오류, 서버가 정상 요청을 처리하지 못함
299
> 2xx(Successful)
클라이언트의 요청을 성공적으로 처리
• 200 OK
• 201 Created
• 202 Accepted
• 204 No Content
200
과 201
을 주로 사용함
201
상태 코드가 오면 자원이 생성되었고 Location 헤더 필드가 존재한다는 것을 파악할 수 있음204
메시지(2xx
)만으로 성공을 인식할 수 있음요청을 완료하기 위해 User Agent의 추가 조치가 필요함
• 300 Multiple Choices
• 301 Moved Permanently
• 302 Found
• 303 See Other
• 304 Not Modified
• 307 Temporary Redirect
• 308 Permanent Redirect
301 ~ 308
까지가 중요함
Redirection
: 웹 브라우저는 3xx
응답의 결과에 Location 헤더가 있으면, Location 위치로 자동으로 이동함
301
상태 코드가 오면 Location 헤더에 있는 /new-event
url로 자동으로 리다이렉션됨
/event
-> /new-event
GET
으로 변하고, 본문이 제거될 수 있음(MAY)301
과 기능은 같음POST
를 보내면 리다이렉트도 POST
유지)GET
으로 변하고, 본문이 제거될 수 있음(MAY)302
와 기능은 같음302
와 기능은 같음GET
으로 변경POST
로 주문 후에 웹 브라우저를 새로고침하면, 새로고침은 다시 요청을 하는 것이기 때문에 중복 주문이 될 수 있음POST
로 주문 후에 새로 고침으로 인한 중복 주문을 방지하기 위해서, POST
로 주문 후에 주문 결과 화면을 GET
메서드로 리다이렉트함GET
으로 조회GET
으로 다시 요청302
스펙의 의도는 HTTP
메서드를 유지하는 것이었는데, 웹 브라우저들이 대부분 GET
으로 바꾸어버림302
를 대신하는 명확한 307
이나 303
이 등장함307
과 303
의 사용을 권장하지만 현실적으로 이미 많은 애플리케이션 라이브러리들이 302
를 기본값으로 사용하고 있음GET
으로 변해도 되면 그냥 302
를 사용해도 큰 문제는 없음304
응답은 응답에 메시지 바디를 포함하면 안됨GET
, HEAD
요청시 사용4xx와 5xx의 차이점
4xx
는 클라이언트가 이미 잘못된 요청, 데이터를 보내고 있기 때문에 똑같이 재시도가 실패함
그러나5xx
는 서버에 문제가 있기 때문에 같은 요청을 재시도하면 성공할 수도 있음
Authentication
)이 되지 않음402
오류 발생시 응답에 WWW-Authenticate
헤더와 함께 인증 방법을 설명
Authentication(인증)
: 본인이 누구인지 확인(로그인)Authorization(인가)
: 권한 부여(ADMIN 권한처럼 특정 리소스에 접근할 수 있는 권한, 인증이 있어야 인가가 있음)
Unauthorized
지만 인증되지 않은 것임500
오류500
오류Retry-After
헤더 필드로 얼마뒤에 복구되는지 보낼 수도 있음강의 출처 : 인프런 : 모든 개발자를 위한 HTTP 웹 기본 지식