Status Codes
서버에서 클라이언트에게 response를 보낼때는 Status Codes를 함께 포함해서 보낸다.
Status Codes는 3개 숫자로 이뤄져있는데, 이 숫자 3개만으로 서버에서 어떻게 처리했는지 정보를 내포하고 있으므로 적절한 코드를 클라이언트에게 보내줘야 한다.
status code 하나만으로도 다 설명이 되는데, 불필요한 body를 섞어보내는건 지양해야한다.
Status Codes는 http 표준에서 정의된 것으로, 브라우저나 다른 모바일 어플리케이션 등 공통적으로 약속된 코드이다.
Status codes 종류
1xx
- 100 – 계속해서 요청해달라는 응답 코드
- 102 – 서버가 request를 처리중임을 알려주는 응답 코드
2xx
- 200 – request를 성공적으로 처리했다는 응답코드
- 201 – 리소스를 만드는 request 였을때, 해당 리소스를 성공적으로 생성했다는 응답 코드
- 204 – 요청한 것은 처리는 했고, 거기에 해당하는 데이터가 없을때 응답 코드
3xx (리다이렉션을 이용할때 많이 사용)
- 301 – 클라이언트가 요청한 것이 영구적으로 다른 곳으로 옮겨졌고, 옮겨진 url을 전달해줄때의 응답 코드
- 302 – 클라이언트가 요청한 것이 임시적으로 다른 곳으로 옮겨졌고, 옮겨진 url을 전달해줄때의 응답코드
- 303 – 302와 동일하지만 GET 요청에서만 사용 가능
- 307, 308 – 임시적 / 영구적 리다이렉트 (같은 요청 메서드에 한해서만 다른 곳으로 옮겼음) (ex. 클라이언트가 post 로 요청을 했을때 307이란 코드가 왔다면 post에 한해서만 다른 url 로 옮겼다는 의미)
4xx
- 400 – 클라이언트가 무엇인가를 요청했는데 쿼리가 잘못됬거나 api를 잘못된 방식으로 사용할때 응답
- 401 – 로그인된, 특정한 키를 가지고 있는 사람만 요청할 수 있는 url임에도 불구하고 권한이 없는 사용자가 요청했을때 응답
- 403 – 로그인한 사용자긴 하지만, 특정한 일을 수행하는 권한이 없을때 응답
- 404 – 요청한 url 이 존재하지 않을 때 응답
- 405 – 해당 url에 한해서 쓰거나 삭제하는 method가 허용되지 않을때 응답
- 409 – 클라이언트가 만들고자 하는 리소스가 이미 존재하거나 충돌이 날때 응답
5xx(최대한 피해야 하는 에러)
- 500 – 서버 내부적인 문제로 request를 처리할 수 없을 때 응답
- 502 – 중간에 있는 서버가 요청을 받아서 처리해야하지만, 어떻게 처리해야할지 모를때 응답
- 503 – 서버가 특정한 요청을 처리할 준비가 되지 않았을때