gpt4 book ai didi

java - 如何显示@ResponseStatus 错误的自定义错误消息?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:47:31 25 4
gpt4 key购买 nike

我创建了一个自定义 @ResponseStatus 异常,并希望它作为 @RestController 的 json 响应以及响应负载返回。

@ResponseStatus(HttpStatus.BAD_REQUEST)
public class BadRequestException extends NestedRuntimeException {
public BadRequestException(String msg) {
super(msg);
}
}

我有一个 CommonsRequestLoggingFilter 应该在发送响应后记录响应。因此过滤器读取 wrapper.getContentAsByteArray():

public class CustomLoggingFilter extends CommonsRequestLoggingFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
ContentCachingResponseWrapper responseToUse = new ContentCachingResponseWrapper(response);

try {
super.doFilterInternal(request, responseToUse, filterChain);
} finally {
byte[] buf = responseToUse.getContentAsByteArray();
String message;

//PROBLEM: buf.length() == 0 in error case, thus cannot create the message
LOGGER.info("Response: " + message);
}
}
}

一般情况下,日志记录有效,但如果出现 @ResponseStatus 错误,响应正文/有效负载将丢失!

问题:如何在异常期间保留主体有效负载以进行日志记录?

最佳答案

而不是使用 ResponseStatus。你可以考虑使用ExceptionHandler。

@ExceptionHandler(异常类)public ModelAndView handleError(HttpServletRequest req, Exception ex) {..}

关于java - 如何显示@ResponseStatus 错误的自定义错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50233056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com