HTTP 상태코드❓
- 1xx(Informational) : 요청이 수신되어 처리중
- 2xx(Successful) : 요청 정상 처리
- 3xx(Redirection) : 요청을 완료하려면 추가적인 행동이 필요
- 4xx(Client Error) : 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음.
- 5xx(Server Error) : 서버 오류, 서버가 정상 요청을 처리하지 못함
2xx - 성공
- 200 OK - 요청이 성공하면 응답이 성공했을때(주로 GET)
- 201 Created - 요청이 성공해서 새로운 리소스가 생성됐을때 사용(주로 POST)
- 202 Accepted - 요청은 접수되었으나 처리가 아직 완료되지 않았을때 사용(잘 사용하지 않음)
- 204 No Content - 요청은 성공했지만, 응답 페이로드 본문에 보낼 데이터가 없을때 사용(응답할 데이터가 없을때)
수 많은 2xx 상태코드가 존재하지만, 대부분 200 혹은 201 까지만 사용하는 경우가 많다❗
3xx - 리다이렉션
(요청을 완료하기 위해선 클라이언트의 추가 조치가 필요)
- 300 Multiple Choices - 거의 사용하지 않음
- 301 Moved Permanently
- 302 Found
- 303 See Other
- 304 Not Modified
- 307 Temporary Redirect
- 308 Permanent Redirect
리다이렉션❓
3xx 응답의 결과에 Location헤더가 존재하면, 그 Location의 위치로 자동 이동❗❗ ( 리다이렉트 )
- 영구 리다이렉션 - 특정 리소스의 URI가 영구적으로 변경
ex) /members -> /uesrs - 일시 리다이렉션 - 일시적으로 변경
ex) 게시글 등록 후 게시들 상세화면으로 이동하는 것 - 특수 리다이렉션 - 결과 대신 캐시를 사용
1. 영구 리다이렉션
리소스의 URI가 영구적으로 변경되었을때 사용한다❗
- 301 Moved Permanently - 리다이렉트시 요청 메서드가 GET으로 변경되고, BODY의 데이터가 제거될 수 있음❗
- 308 Permanent Redirect - 리다이렉트시 요청 메소드와, BODY 데이터가 모두 유지❗
실무에서는 308은 거의 사용하지 않는다.
URI가 변경되었다는건 내부적으로도 많은것이 변경되었다는것을 의미하기때문에 GET으로 다시 Redirct하는게 맞음❗
사실 두 개 모두 잘 사용되지 않는다...😥
2. 일시 리다이렉션
리소스의 URI가 일시적으로 변경될때 사용한다❗
- 302 Found - 리요청 메서드가 GET으로 변경되고, BODY의 데이터가 제거될 수 있음❗
- 307 Temporary Redirect - 리다이텍트시 요청 메서드와 BODY 데이터가 모두 유지
- 303 See Other - 리다이렉트시 무조건 요청 메서드를 GET으로 변경❗
그럼 이 일시적 리다이렉션을 언제 사용할까❓❓🤔
PRG(POST/Redirect/Get) 패턴때 많이 사용한다❗
POST로 어떤 리소스를 새로 생성하고, 다시 새로고침을 하면 다시 요청을 반복하기 때문에😱 다시 POST 요청이 전송되고, 리소스 중복이 일어날 수 있다❗
이떄 RPG패턴을 사용해서 POST로 리소스를 생성하고, 결과 화면을 GET 메서드로 리다이렉트 시키면 해결된다❗
이때 클라이언트가 새로고침을 해도 결과화면을 다시 요청하는것이기 때문에 문제가 없다❗
3. 기타 리다이렉션
- 300 Multiple Choices - 사용하지 않음
- 304 Not Modified - 캐시를 목적으로 사용한다. 캐시로 리다이렉트한다고 이해하면 된다.❗
클라이언트에게 캐시를 재사용하라고 알려주는것이다. 캐시를 사용하는것이기 때문에 응답에 BODY를 포함하면 안된다❗
4xx - 클라이언트 오류
클라이언트의 잘못된 요청으로 서버가 요청을 수행 할 수 없을때 사용한다.
온전히 클라이언트의 요청이 잘못되었기때문에 오류의 원인이 클라이언트이고, 재시도를해도 항상 실패를한다.
- 400 Bad Request - 요청구문, 메시지 등의 오류
ex) 요청 파라미터가 잘못되었거나, API 스펙에 맞지 않을 경우 - 401 Unauthorized - 클라이언트가 해당 리소스에 대한 인증이 필요할때 사용한다. ( 로그인이 안됐을 때 )
WWW-Authenticate 헤더와 함께 인증 방법을 응답 메시지에 담아서 보내줘야한다❗ - 403 Forbidden - 서버가 요청을 이해했지만, 승인을 거부 ( 접근 권한이 없을 때 )
ex) 일반사용자가 ADMIN페이지에 접근을 시도 했을때 - 404 Not Found - 요청 리소스를 찾을수 없을때 사용한다. ( 서버에 요청 리소스가 존재하지 않을 떄 )
5xx - 서버 오류
- 500 Internal Server Error - 서버 내부 문제로 오류가 발생햇을 때 ( 애매하면 다 500 오류 )
- 503 Service Unavailable - 서비스 이용 불가 ( 서버의 일시적 과부화, 예정된 작업으로 잠시 중단 됐을 때 )
출처
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC
'네트워크' 카테고리의 다른 글
HTTP 웹 기본 지식 - HTTP 헤더(캐시와 조건부 요청) (0) | 2021.10.19 |
---|---|
HTTP 웹 기본 지식 - HTTP 헤더(일반 헤더) (0) | 2021.09.16 |
HTTP 웹 기본 지식 - HTTP 메서드 (0) | 2021.08.30 |
HTTP 웹 기본 지식 - HTTP 기본 (0) | 2021.08.27 |
HTTP 웹 기본 지식 - URI와 웹 브라우저 요청 흐름 (0) | 2021.08.24 |