Computer Science
[HTTP] HTTP 상태코드
GreatJang
2024. 1. 31. 23:46
HTTP상태코드란?
클라이언트가 보낸 요청의 처리 상태를 서버의 응답에서 알려주는 값
- 100번대 부터 500번대까지 존재
- 100단위로 각각의 특성이 존재
- 큰 단위에서 의미가 사전에 부여되어 있으므로, 미래에 새로운 상태 코드가 추가되어도 클라이언트를 변경하지 않아도 된다.
사용목적
적절한 상태코드를 서버에서 클라이언트로 return 해주어야 클라이언트도 그에 맞는 대처를 할수가 있다.
1xx(Informational)
- 요청이 수신되어 처리중
- 거의 사용X
2xx (Successful)
- 요청 정상 처리
- 주요 코드
- 200 OK
- ex) get 요청 이후 정상 data return시
- 201 Created
- ex)POST 요청 성공해서 새로운 리소스가 생성됨
- 생성된 리소스는 응답의 Location 헤더 필드를 알려줌
- 그러나 redirect를 시켜서 302상태코드가 찍히기도 함
- 200 OK
3xx (Redirection)
- 일반적으로, 현재의 페이지에서 다른 페이지로 리다이렉팅 되었음을 의미
- 그래서 요청을 완료하려면 추가 행동이 필요
- 주요 상태코드
- 3xx – 리다이렉션
- 301
- 영구 리다이렉션
- 308이 더 최신 상태코드
- 검색 엔진 등에서도 변경 인지
- 302 Found
- 가장많이 사용
- 일시적인 리다이렉션
- 리다이렉션 활용 방법
- Post/Redirect/Get
- POST로 요청이후에 새로 고침으로 인한 POST요청 방지
- POST로 요청 이후에 그 이후 302 + location으로 결과return
- location으로 GET 메서드 리다이렉트
- 307이 더 최신 상태코드
- 304 Not Modified
- GET요청시 사용자가 가지고 있는 리소스가 캐시된 리소스임을 명시하기 위해 사용
- 클라이언트에게 리소스가 수정되지 않았음을 알려줌
- 이미 사용자가 해당 리소스를 가지고 있으므로, 304 응답은 응답에 메시지 바디를 포함할 필요 없음.
⭐4xx (Client Error)
- 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음
- 주요 상태코드
- 400 Bad Request
- 잘못된 요청과 구문
- http://localhost:8081/authors/findById?id
- 401 Unauthorized
- 서버로의 접속이 인증되지 않았을때
- 즉, 로그인이 되지 않았을때
- 403 Forbidden
- 인증 자격은 있지만, 접근권한이 없을때
- 404 Not Found
- 요청 리소스가 서버에 없을때
- http://localhost:8081/authors/findById
- 조회하고자 하는 사용자가 없을때
- 요청 리소스가 서버에 없을때
- 400 Bad Request
5xx (Server Error)
- 서버 오류, 서버가 정상 요청을 처리하지 못함
- 주요 상태코드
- 500 Internal Server Error
- 별도의 지정된 상태 코드가 없을때 대부분의 서버에서 예외 발생시에 return
- 503 Service Unavailable
- 서버가 일시적인 과부하 또는 예정된 작업으로 인한 일시적 오류를 의미
- 500 Internal Server Error