[Spring] 자주 쓰는 HTTP 상태코드

thingzoo·2023년 6월 28일
0

Spring

목록 보기
5/54
post-thumbnail

HTTP Status Code

Status Code는 사용자가 웹 서버에 요청을 보냈을 때, 응답으로 보내주는 숫자 코드이다.
각 숫자는 미리 약속된 특정한 의미를 포함하고 있다.
따라서 클라이언트는 응답으로 온 숫자를 통해 보낸 요청이 성공적으로 진행되었는지, 앞으로 어떻게 해야할지 결정하는데 도움을 받을 수 있다.

자주 쓰는 HTTP 상태코드

2XX Success

200번대의 응답코드는 성공을 의미한다.

200 OK

대표적인 성공코드로, 에러 없이 요청이 성공적으로 진행되었다는 것을 의미한다.
(서버가 요청받은 페이지를 성공적으로 제공)

201 Created

요청이 성공적으로 처리 되어, 서버가 새로운 리소스를 생성했을 때 사용하는 코드이다.

  • POST, PUT등의 요청에 대한 응답으로 주로 사용된다.

204 No Content

서버에 대한 요청이 성공적으로 처리되었고, 제공 해줄 응답 데이터가 없을 때 204를 사용한다.

  • PUT으로 수정 요청을 받았는데 수정할 사항이 없는 경우
  • DELETE 요청 시 데이터 삭제가 성공적으로 처리되었을 경우

3XX Redirection

300번대의 응답코드는 리다이렉션을 의미한다.
이는 요청이 완수되기 위해서는 추가적인 행동이 필요하다는 의미이다.

301 Moved Permanently

요청한 리소스가 응답 헤더의 Location에 주어진 URL로 영구적으로 이동했음을 의미한다.

  • 예를들어 주소창에 http://naver.com/ 을 입력하면, 301을 리턴하는데, 응답 헤더의 Location을 확인해보면 http://www.naver.com/ 으로 리다이렉션 된다. 웹브라우저는 이 코드를 받고, 해당하는 URL로 리다이렉트한다.

302 Found

301과 비슷하게 사용된다. 차이가 있다면 301의 경우는 영구적으로 이동하는 것이고, 302의 경우, 일시적으로 이동한다는 것이다.

  • 예를들어, kart.nexon.com 같은 게임페이지에 접속할 때, 메인 홈페이지가 아닌 현재 진행중인 이벤트를 보여주는 홈페이지로 일시적으로 이동시킨다.
    • 위 예시의 경우 kart.nexon.com > kart.nexon.com/redirector.aspx > kart.nexon.com/events/~ 의 절차를 통해 이벤트 페이지로 이동하게 된다.

304 Not modified

캐시목적으로 사용된다. 요청 후 수정된 사항이 없을 때 사용된다.
이 경우 캐시에 저장되어 있는 데이터를 그대로 보여주게 된다.

4XX Client Error

400번대의 코드들은 클라이언트의 요청이 유효하지 않을 때 사용한다.

400 Bad Request

API에 정의되지 않은 방식으로 요청을 하는 등, 클라이언트가 잘못된 요청을 했을 때 사용한다.

  • 예를들어, 로그인할 때 id만 보내고 password를 보내지 않았을 때, 400 을 사용할 수 있다.

401 Unauthorized / 403 Forbidden

두 경우 모두 클라이언트가 권한이 없어서 요청을 받아들일 수 없을 때 사용한다.

  • 401의 경우는 인증이 되지 않은 경우이다. 예를 들어 로그인이 필요한 기능을 로그인 하지 않은 상태로 요청하면 401이 적절하다.
  • 403의 경우는 권한이 없는 경우이다. 예를 들어 어떤 카페에서 로그인은 되어있는 상태이지만 등급이 낮아 접속 권한이 없을 때는 403이 적절하다.

404 Not Found

서버에 클라이언트가 요청한 리소스를 찾을 수 없을 때 사용한다.

  • 실생활에서 자주 접할 수 있는 에러인데, 링크를 잘못입력하거나, 예전 링크여서 사라진 위치를 참조하고 있을 때 등 많은 이유로 404 에러를 만나게 된다.

5XX Server Error

500번대의 코드들은 400번대와 반대로, 클라이언트 측이 아닌 서버측에 오류가 있을 때 사용된다.

500 Internal Server Error

200 OK와 비슷하게 서버 오류에 대해서 포괄적으로 사용되는 코드이다.

  • 클라이언트의 요청을 처리하는 과정에서 DB에서 오류가 발생하는 등 요청이 잘못된 것이 아니라 서버측에서 문제가 생겼을 때 사용한다.
  • 예를들어, 회원가입을 하는 로직에서,
    • 유저가 이미 존재하는 이메일을 통해 회원가입을 시도
    • 이것을 중간에 검사하지 않고 DB에 회원을 추가적으로 가입시키려 시도
    • 유일성 문제 등에 의해 DB 에러, 즉 서버 에러가 발생하게 된다
    • 개발자들은 이런 상황을 미연에 방지할 수 있는 로직을 구현해야 한다.
    • (만약 사용자가 중복된 이메일을 사용하려고 할 때, 무작정 Create 하지 않고 DB에서 이미 존재하는지 확인 후 작업을 진행)

503 Service Unavailable

서버의 과부하, 점검 등의 이유로 일시적으로 서버에 접근이 불가능할 때 사용한다.

Reference

🔗 https://velog.io/@geeneve/%EC%9E%90%EC%A3%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-HTTP-%EC%83%81%ED%83%9C-%EC%BD%94%EB%93%9C

profile
공부한 내용은 바로바로 기록하자!

0개의 댓글