상태 코드

yshjft·2022년 5월 30일
0

네트워크

목록 보기
7/18

200 OK

  • 클라이언트의 요청을 서버가 성공적으로 처리한 경우 사용한다.

201 Created

  • 클라이언트의 요청을 서버가 정상적으로 처리했고 새로운 리소스가 생겼다.
  • POST, PUT 요청에 대한 응답으로 사용된다.
  • 헤더의 Content-Location을 통해 리소스가 생성된 위치를 알려주면 더욱 좋다!
  • 🤨 PUT은 수정인데 새로운 리소스가 생겼다고 해석해도 되는 것인가?

202 Accepted

  • 클라이언트의 요청은 정상적이나, 서버가 요청을 완료하지 못했다.
  • 작업 완료를 위한 일련의 작업들이 오래 걸리기 때문에 나중에 알려주겠다는 의미(비동기 작업)
  • 비동기 작업의 완료 여부를 알 수 있는 법
    • Callback: 작업이 완료되면 클라이언트에게 알려준다.
    • Polling: 클라이언트가 주기적으로 작업의 상태를 조회한다.

204 No Content

  • 클라이언트의 요청은 정상적이다. 하지만 컨텐츠를 제공하지 않는다.

  • 수정과 삭제에서 주로 사용

  • 응답에 별도의 데이터를 실어서 보내줄 수 없다. HTTP Response body가 아예 존재하지 않는다.

  • 삭제 요청

    • [Reqeuest ]DELETE /USER/1 → [Response] 204
      • 자원 삭제를 요청함에 따라 서버에서 자원이 삭제되고 응답할 자원이 없으므로 204로 응답한다.
  • 수정 요청

    • 수정 요청의 결과가 기존의 자원 내용과 동일하여 변경된 내용이 없을 때 204로 응답할 수 있다.
    • 만양 수정 요청으로 자원의 내용이 변경된다면 201로 응답한다.(🤨 이부분은 잘 모르겠다)

301

  • 영구 이동, Moved Permanently
  • 해당 URL이 영구적으로 새로운 URL로 변경되었을 때 사용한다.

302

  • 임시 이동, Moved Temporarily

307

  • Temporary Redirect
  • 302와 유사하나 HTTP 메서드를 유지한다.

308

  • Permanent Redirect
  • 301과 유사하나 HTTP 메서드를 유지한다.

400 Bad Request

  • 클라이언트의 요청이 유효하지 않아 더 이상 작업을 진행하지 않는 경우 사용한다/
  • 400 상태코드와 반드시 오류 발생의 위치, 사용자 입력 값, 에러 이유를 함께 전달해주자

401 Unauthorized

  • 클라이언트가 인증이 되지 않아 작업을 진행할 수 없는 경우다.
  • 로그인 조차 하지 않아서 접근할 수 없는 상태
  • 아이디나 비밀번호가 틀려서 로그인을 실패한 경우(🤨Bad Request로 할 수 있지 않나?)

403 Forbidden

  • 클라이언트가 인증은 됐으나 권한이 없기 때문에 작업을 진행할 수 없는 경우

404 Not Found

  • 클라이언트가 요청한 자원이 존재하지 않는다

405 Method Not Allowed

  • 클라이언트의 요청이 허용되지 않는 메소드인 경우
  • uri는 존재하지만 지원되지 않는 메소드인 경우

409 Conflict

  • 클라이언트의 요청이 서버의 상태와 충돌이 발생한 경우
  • ex) post 요청 시 이미 존재하는 자원이 있는 경우에 대한 응답으로 사용
    • 회원가입이 이미 되어있는데 또 회원가입을 시도하는 경우
  • 로직상 모순이 발생하여 처리가 불가능한 경우 
    • 게시물이 있으면 사용자를 삭제할 수 없다

413 Payload Too Large

  • request의 payload가 서버에서 정의한 한계보다 큰 경우
  • ex) 전달된 파일의 크기가 정의한 값보다 큰 경우

429 Too Many Request

  • 클라이언트가 일정 시간 동안 너무 많은 요청을 보낸 경우
    • 일정 시간 뒤 요청할 것을 의미
    • Retry-After 헤더를 이용하여
      Retry-After: 3600

5XX

  • 서버 오류
  • API를 사용하는 클라이언트에게 5XX 상태 코드는 나타내지 말아야 한다.

500

내부 서버 오류

502 Bad Gateway

  • 서버가 게이트웨이로부터 잘못된 응답을 수신했음을 의미합니다. 인터넷상의 서버가 다른 서버로부터 유효하지 않은 응답을 받은 경우 발생합니다.
  • 프록시 서버와 백엔드 어플리케이션 간의 연결된 추상적인 통로를 “게이트웨이”라고 부르는 것이다. 백엔드 어플리케이션이 죽어버릴 경우 앞 단의 문지기인 프록시 서버는 백엔드 어플리케이션에게 아무런 응답을 받지 못하게 되고, 클라이언트에게 502 Bad Gateway라는 응답을 보내주는 것이다.

503 Service Unavailable

  • 서버가 오버로드되었거나 유지관리를 위해 일시적으로 다운되었기 때문에 현재 서버를 사용할 수 없다.

내용 출처

REST API에서의 HTTP 상태 코드, 상태 메시지 (응답 코드, 응답 메시지)

profile
꾸준히 나아가자 🐢

0개의 댓글