TIL) Status Code

Jiwon Lee·2022년 5월 31일
0

TIL

목록 보기
7/19

2XX Success

2xx 번대 상태 코드들은 서버가 클라이언트의 요청 처리했다는 의미이다.

200 Ok

  • 클라이언트의 요청이 서버에 정상적으로 처리됨.
    모든 성공에 대한 상태코드를 200으로 줘도 상관은 없다. 그러나 세부적으로 나눠서 적절한 상태코드를 갖게 하는 것이 바람직하다.

201 Created

  • Post, Put 요청에 대한 응답에 주로 사용된다. 의미는 200과 비슷하나, 성공과 동시에 새로운 리소스가 생성되었다는 의미를 내포한다.

202 Accepted

  • 클라이언트의 요청은 정상적이나, 서버가 아직 요청을 완료하지 못함을 뜻한다.
  • 클라이언트의 요청이 정상적이면 서버에서 작업의 성공과 실패를 응답으로 내놓는 것이 일반적이나, 작업 완료를 위한 일련의 작업들이 오래 걸리기 때문에 나중에 알려주겠다는 의미이다.
🖤 클라이언트가 요청의 완료 여부를 확인할 수 있는 2가지 방법
1. Callback
	서버 작업이 완료 되면 클라이언트에게 알려주는 것.
2. Polling
	클라이언트가 주기적으로 해당 작업의 상태를 조회하는 것.

204 No Content

  • 클라이언트의 요청은 정상적이나, 컨텐츠를 제공하지 않는다.
  • 204 상태 코드는 자원의 삭제 요청에 응답할 수 있다.

4XX Client Errors

4xx의 상태들은 클라이언트의 요청이 유효하지 않아 서버가 해당 요청을 수행하지 않았다는 의미이다.

400 Bad Request

  • 클라이언트의 요청이 유효하지 않아 더 이상 작업을 진행하지 않는 경우
    Api 서버는 클라이언트의 요청이 들어오면 바로 작업 하지 않고, 요청이 서버가 정의한 유효성에 맞는지 사전 유효성을 검증한 뒤에 작업을 진행할 수 있다.
    (유효성 검증 없이 진행하게 되면 5xx의 서버 오류가 발생할 수 있기 때문에 대부분 사전에 막는 로직을 추가한다.)
그러나 400 상태코드로 응답하는 것만으로는 부족하다. 오류 발생 시,
파라미터의 위치(path, query, body), 사용자 입력 값, 에러 이유를 꼭 명시하는 것이 좋다.

401 Unauthorized (un + authorized : 인정받은, 권한을 부여 받은) / authenticated : 인증

  • 클라이언트가 권한이 없기 때문에 작업을 진행할 수 없는 경우.
    401은 비인증. 즉, 인증이 안되어서 자원을 이용할 수 없는 상태.

403 Forbidden (forbidden : 금지된) / authorized : 승인

  • 클라이언트가 권한이 없기 때문에 작업을 진행할 수 없는 경우
    403은 권한에 대한 내용.

404 Not Found

  • 클라이언트가 요청한 자원이 존재하지 않음.
  1. 경로가 존재하지 않음.
    대부분 api 프레임워크에서는 경로(라우팅)에 대한 에러 처리를 해준다.
  2. 자원이 존재하지 않음.
    그러나 자원의 경우는 개발자가 처리해줘야한다.

405 Method Not Allowed

  • 클라이언트의 요청이 허용되지 않는 메소드인 경우. (메소드(method) = post, get, put, delete등 http method를 말한다.)
    즉, 자원(URI)은 존재하지만, 해당 자원이 지원하지 않는 메소드일 때 응답하는 상태코드이다.
    405 상태코드는 options 메소드와 http header 의 allow와 연관되어있다.
    options는 api가 허용하는 메소드가 어떤 것들이 있는지 확인하는 메소드이다. (405에러를 사전에 방지하기 위한 용도로 주로 쓰인다.) 이 때, 응답 http header의 allow에 지원하는 메소드를 나열하여 응답한다.

409 Conflict

  • 클라이언트의 요청이 서버의 상태와 충돌이 발생한 경우.(중복)
    앞서 나열한 상태코드에 속하기 어려운 애매한 오류들의 상황을 409로 응답한다.

429 Too Many Requests

  • 클라이언트가 일정 시간 동안 너무 많은 요청을 보낸 경우.
    비정상적인 (DoS attack, Brute-force attack)방법으로 자원을 요청하는 경우 응답한다.
    서버가 감당하기 힘든 요청이 지속적으로 들어오면, 서버는 해당 요청을 처리하기 위해 다른 작업을 처리하지 못할 수 있다.
    429 상태 코드는 이러한 경우 일정 시간 뒤 요청할 것을 나타내는 것이다. 따라서 다음과 같이 Retry-After를 이용한다.
http/1.1 429 Too Many Requests
    Retry-After:3600

클라이언트는 3600초 후에 다시 해당 자원에 대한 작업을 요청할 수 있다.

5XX Server errors

5xx상태코드들은 서버 오류로 인해 요청을 수행할 수 없다는 의미이다.

0개의 댓글