ProblemDetail
ProblemDetail은 Spring Framework 6.0에 추가된 REST API의 에러 응답 표준이다.
RFC 7807에 정의되어 있다.
- 참고: https://docs.spring.io/spring-framework/docs/6.0.7/reference/html/web.html#mvc-ann-rest-exceptions
아래는 간단히 Spring Boot의 기본 에러 응답을 ProblemDetail로 설정하는 방법을 설명한다.
ProblemDetailsExceptionHandler
에러 응답 예시
아래는 Spring Boot의 기본 에러 응답을 ProblemDetail로 설정했을 때의 에러 응답 body이다.
{
    "type": "about:blank",
    "title": "Method Not Allowed",
    "status": 405,
    "detail": "Method 'POST' is not supported.",
    "instance": "/"
}
Spring Boot 설정
아래 설정을 추가하면 ProblemDetailsExceptionHandler가 자동 구성된다.
이를 통해 Spring Framework에서 제공하는 웹 예외들은 자동으로 ProblemDetail 형식의 response body로 에러 응답을 한다.
spring.mvc.problemdetails.enabled=true
자동 구성
위의 설정이 되어있으면 아래 클래스에서 ProblemDetailsExceptionHandler가 자동 구성된다.
package org.springframework.boot.autoconfigure.web.servlet;
public class WebMvcAutoConfiguration {
    @Configuration(proxyBeanMethods = false)
    @ConditionalOnProperty(prefix = "spring.mvc.problemdetails", name = "enabled", havingValue = "true")
    static class ProblemDetailsErrorHandlingConfiguration {
        @Bean
        @ConditionalOnMissingBean(ResponseEntityExceptionHandler.class)
        @Order(0)
        ProblemDetailsExceptionHandler problemDetailsExceptionHandler() {
            return new ProblemDetailsExceptionHandler();
        }
    }
}
자동 구성되는 ProblemDetailsExceptionHandler
ResponseEntityExceptionHandler를 확장한 구현 클래스일 뿐이다.
package org.springframework.boot.autoconfigure.web.servlet;
@ControllerAdvice
class ProblemDetailsExceptionHandler extends ResponseEntityExceptionHandler {
}
 

 
    
Top comments (0)