HTTP 상태 코드
Table of contents
1xx (informational)
- 요청이 수신되어 처리 중
- 실무에서도 거의 사용하지 않는 코드
2xx (Successful)
200 OK : 요청을 정상적으로 수행했을 때
201 Created: 요청을 수행해서 새로운 리소스(자원)가 생성될 때
202 Accepted : 요청이 접수 되었지만, 처리가 완료되지 않았을 때
204 No Content : 서버가 요청을 수행했지만, 본문에 보낼 데이터가 없을 경우 (ex. 웹 문서 편집기의 save 버튼 처럼, save 버튼을 눌러도 같은 화면을 유지해야 할 때)
-> 결과 내용이 없어도 204 메세지 만으로 요청 성공을 확인할 수 있다.
3xx (Redirection)
-> 웹 브라우저는 3xx 응답 결과에 Location 헤더가 있으면, Location 위치로 자동 이동
(ex. 이미 사용하고 있던 url을 바꿔야 하는 경우, 북마크 해두었던 사용자들을 문제 없이 새로운 페이지로 이동시켜줄 수 있다.)
301 · 308 (영구적인 리다이렉션)
- 리소스의 URI가 영구적으로 이동
- 원래의 URL을 사용하지 않는다.
- 실무에서는 어차피 url이 변경되면, body도 새로 입력받아야 하는 경우가 많기 때문에, 보통 301을 많이 사용한다.
301의 경우 post 사용 시, body부를 제거해버리고, 새로운 URL로 리다이랙션한다.
308은 post body부를 유지시킨다.
302 · 307 · 303 (일시적인 리다이렉션)
- 리소스의 URI가 일시적으로 변경
- 따라서, 검색 엔진 등에서 URL을 변경하면 안된다.
- 302는 301과 비슷한 역할을 수행한다. 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있다.
- 307은 302와 기능이 같지만, 요청 메서드와 본문을 유지한다.
- 303은 302와 기능이 같고, 확실하게 요청 메서드를 GET으로 변경시킨다.
- GET으로 요청메서드를 바꿔줌으로서, POST 요청이 사용자에게 계속 남겨져서, 새로고침으로 인한 중복 POST 문제를 방지할 수 있다.
4xx (Client Error)
- 오류의 원인이 클라이언트에 있는 경우 사용
- 클라이언트의 요청이 정상적으로 바뀌지 않는 한, 같은 에러가 계속 발생할 수 있다.
- 서버에서 문제가 없다는 사실을 클라이언트에게 정확히 알려줄 수 있다.
- 404는 요청 리소스가 서버에 없거나, 클라이언트가 권한이 부족한 리소스에 접근할 때 사용
5xx (Server Error)
오류의 원인이 서버에 있는 경우 사용
- 500은 서버 내부 문제로 오류 발생 시
- 503은 일시적인 과부하 또는 예정된 작업으로 요청 처리할 수 없을 때 사용