HTTP 상태 코드는 HTTP 응답의 일부로, 서버가 클라이언트의 요청을 어떻게 처리했는지를 나타냅니다.
상태 코드는 클라이언트에게 요청의 성공, 실패 및 원인에 대한 정보를 제공합니다.
상태 코드를 Body에 담는 이유
상태 코드를 HTTP 응답의 본문(Body)에 포함시키는 이유는 두 가지 주요한 이유가 있습니다:
1. 상세한 정보 제공
상태 코드만으로는 에러의 세부 사항을 충분히 설명할 수 없습니다. 본문에 상태 코드와 함께 에러 메시지를 제공하면, 클라이언트는 에러의 원인을 더 정확하게 파악할 수 있습니다.
2. 응용 프로그램의 일관성 유지
본문에 상태 코드를 포함시키면, 응용 프로그램 내에서 에러 응답의 형식을 일관되게 유지할 수 있습니다.
보통 헤더에 상태 코드를 포함해서 반환을 하는데, 이 경우에 프론트에서 헤더 정보를 파싱해야하는 번거로움이 존재합니다
예시 코드
if (errors.hasErrors()) {
List<FieldError> fieldErrors = errors.getFieldErrors();
Exception400 ex = new Exception400(fieldErrors.get(0).getDefaultMessage() + ":" + fieldErrors.get(0).getField());
return new ResponseEntity<>(
ex.body(),
ex.status()
);
}
위의 코드는 요청 처리 중 발생한 에러를 다루는 방법을 보여줍니다.
에러가 있는 경우(errors.hasErrors()
), 해당 에러 정보를 받아옵니다(errors.getFieldErrors()
).
그리고 첫 번째 에러의 메시지와 필드 정보를 이용해 Exception400
객체를 생성합니다.
이 객체의 메서드를 통해 에러 메시지와 상태 코드를 추출하고, 이를 ResponseEntity
에 담아 클라이언트에게 반환합니다.
public class Exception400 extends RuntimeException {
public Exception400(String message) {
super(message);
}
public ApiUtils.ApiResult<?> body(){
return ApiUtils.error(getMessage(), HttpStatus.BAD_REQUEST);
}
public HttpStatus status(){
return HttpStatus.BAD_REQUEST;
}
}
부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
728x90
'DEV > Java' 카테고리의 다른 글
Controller의 책임 (0) | 2023.07.18 |
---|---|
Custom Exception (0) | 2023.07.18 |
요청 DTO에 정규 표현식 적용하는 방법 (0) | 2023.07.18 |
H2 DB (0) | 2023.07.11 |
JPA의 영속 상태 (0) | 2023.07.11 |