-
240115 HTTP 상태코드TIL 2024. 1. 15. 21:51
1xx, 2xx, 3xx, 4xx, 5xx 가 있으며 종류도 엄청 많다.
물론 다 사용하는게 능사는 아니다. 상황에 따라서, 팀이랑 조율해서 사용할것
1xx Informational
- 100번대 상태코드
- 요청처리중
- 거의 안쓰는편. 나도 한번도 본적 없다..
2xx Successful
- 200번대 상태코드. 요청완료 때 뜬다.
- 200 ok.
- 요청처리완료. 가장 무난하고 자주 보는 상태코드
- 201 created.
- 생성하다.
- Post 같이 뭔가 새로운 리소스가 생성 됬을때 사용
- 202 Accepted
- 요청완료, 처리진행중
- 딜레이가 필요한 작업에 사용
- ex) 접수 후 한시간 후에 시작 (알람?)
- however... 잘 사용 안함
- 204 No Content
- 요청완료, 클라측에 전송할 내용(컨텐츠) 없음
- ex) save 버튼 누를때 -> 별도 메세지 전해줄게 없다!
3xx Redirection
리다이렉션 - 재시도. 유저 에이전트(클라이언트)의 추가 조치가 필요함.
1. 영구 리다이렉션
- 특정 리소스의 URI가 다른 URI로 영구적 이동 시켰을때 사용
- 검색 엔진에서도 변경 된 URI 사용
- 구 URI로 요청시 신 URI를 응답해 신URI로 연결 시킨다
- 301, 308 상태코드 사용
- 301 - 리다이렉트 요청 후 POST요청을 거의 GET(메세지바디 소실)으로 변경
- 308 - 301에서 기존 요청 메서드를 유지 시킴
2. 일시 리다이렉션
- 일시적 URI 변경
- 검색 엔진에서 URI 변경X
- 302, 307, 303 상태코드 사용
- 302 - 리다이렉션 요청 후 POST요청을 거의 GET(메세지바디 소실)으로 변경
- 307 - 302에서 기존 요청 메서드를 유지 시킴
- 303 - 302받고 모든 요청을 GET으로 바꿈
- 대게 302 씀
+ PRG ~Post Redirect Get~
POST 요청> 302 리다이렉션 응답> GET 으로 전환하는 방법
중복요청 위험성이 있는 POST 이후 리다이레션을 줘 GET으로 바꾼다.
클라이언트에서 새로고침창을 띄우는 방법도 있지만 서버측에서도 방지하는게 좋음(이게 더 깔끔하다)
ex)구매화면에서 새로고침으로 인한 중복구매 방지3.기타 리다이렉션
- 300 Multiple Choices
- 안쓴다!
- 304 Not Modified
- 클라이언트에게 리소스 수정이 없었음을 알려준다 -> 기존꺼 사용해도 ok란 뜻
- 새 리소스를 다운받지 않고 기존 캐시를 사용한다
- 기존 캐시를 사용해야함으로 메시지바디 포함X
4xx Client Error
- 클라이언트 오류. 요청메세지 오류
- 클라이언트가 보낸 요청이나 인가가 맞지 않을때
- 400 Bad Request
- 요청 파라미터나 API가 안맞음
- 서버오류로 이어질수 있기에 규격에 안맞는 요청들을 잘 걸러내야함
- 401 Unauthorized
- 클라이언트의 리소스 인증 필요
- 인증 필요
- 403 Forbidden
- 요청은 이해하나 승인 거부
- 인증 O but 인가가 없는 경우(상위 리소스 접근)
- ex)멤버가 마스터 권한 접근시
- 404 Not Found
- 요청 리소스 서버에 없음
- 없는 페이지인척 하고 싶을때 사용w
5xx Server Error
- 서버 오류. 요청수행불가
- 500 Internal Server Error
- 서버 내부 문제 오류 발생
- 카테고리 애매하면 그냥 500 날림
- 503 Service Unavailable
- 서비스 이용 불가
- 서버점검이나 과부하시 다운때 사용
- 근데 그냥 500 쓴다
4xx은 클라이언트 요청문제라 100번 시도해도 100번 실패하지만
5xx는 서버문제라 나중에 다시 시도하면 성공할수 있음
이게 둘의 큰 차이점!
서버 오류는 진짜 DB에 문제가 생겼거나 쿼리문에 이상 있을때 해야한다. 클라이언트나 이용하는 *고객의 특수성에 따라 발생하는 문제에 쉽사리 500 코드를 걸어선 안됌
*은행 인출시 잔액 부족, 미성년자가 담배구매
'TIL' 카테고리의 다른 글
240110 HTTP 메서드 활용 (0) 2024.01.10 240106 HTTP 메서드 (0) 2024.01.06 240105 HTTP 기본 - 용청/응답 메세지 (1) 2024.01.05 240105 HTTP 기본 (0) 2024.01.05 240104 URI와 웹 브라우저 요청 흐름 (1) 2024.01.04