Dazzling 개발 노트

[Spring] @ResponseStatus 어노테이션으로 HTTP 상태 코드 제어 본문

Develop/Spring

[Spring] @ResponseStatus 어노테이션으로 HTTP 상태 코드 제어

dj._.dazzling 2024. 1. 21. 13:23

스프링 프레임워크에서 @ResponseStatus 어노테이션은 컨트롤러 메서드나 예외 클래스에 적용되어 HTTP 응답의 상태 코드를 명시적으로 지정한다. 이 어노테이션을 사용함으로써 개발자는 특정 조건에서 원하는 HTTP 상태 코드를 클라이언트에게 반환할 수 있다. 다음은 @ResponseStatus와 함께 자주 사용되는 몇 가지 HTTP 상태 코드와 그 특징들이다.

200 OK

  • 성공적인 요청과 응답을 나타낸다.
  • @ResponseStatus(HttpStatus.OK)로 명시할 수 있으며, 일반적으로 조회 작업(GET 요청)이 성공적으로 완료되었을 때 사용된다.

201 Created

  • 새로운 리소스가 성공적으로 생성되었음을 나타낸다.
  • @ResponseStatus(HttpStatus.CREATED)를 사용하여, POST 요청을 통해 새로운 엔티티가 생성될 때 해당 상태 코드를 반환할 수 있다.

204 No Content

  • 요청은 성공적이었으나, 클라이언트에게 전달할 콘텐츠가 없음을 나타낸다.
  • @ResponseStatus(HttpStatus.NO_CONTENT)를 사용하여, 작업은 성공적으로 수행되었으나 반환할 데이터가 없는 경우에 사용한다.

400 Bad Request

  • 서버가 요청을 처리할 수 없음을 나타낸다. 일반적으로 잘못된 요청 데이터 때문에 발생한다.
  • @ResponseStatus(HttpStatus.BAD_REQUEST)를 사용하여, 요청 데이터의 유효성 검사 실패와 같은 상황에서 이 상태 코드를 반환할 수 있다.

401 Unauthorized

  • 요청이 인증을 필요로 한다.
  • @ResponseStatus(HttpStatus.UNAUTHORIZED)를 사용하여, 인증되지 않은 접근 시도에 대해 이 상태 코드를 반환할 수 있다.

403 Forbidden

  • 서버가 요청을 이해했으나, 권한 부족으로 인해 요청을 거부한다.
  • @ResponseStatus(HttpStatus.FORBIDDEN)를 사용하여, 사용자가 리소스에 접근할 권한이 없는 경우에 사용된다.

404 Not Found

  • 서버가 요청한 리소스를 찾을 수 없다.
  • @ResponseStatus(HttpStatus.NOT_FOUND)를 사용하여, 사용자가 요청한 리소스가 서버에 존재하지 않을 때 이 상태 코드를 반환할 수 있다.

500 Internal Server Error

  • 서버 내부 오류로, 서버가 요청을 처리할 수 없다.
  • @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)를 사용하여, 애플리케이션 내부에서 처리할 수 없는 오류가 발생했을 때 이 상태 코드를 반환할 수 있다.

@ResponseStatus 어노테이션은 스프링에서 HTTP 응답 상태 코드를 제어하는 간편하고 선언적인 방법을 제공한다. 컨트롤러 레벨에서 명확한 응답 상태 코드를 제공함으로써, API의 사용자는 더 명확한 피드백을 받고 오류 처리를 보다 효과적으로 할 수 있다.