gpt4 book ai didi

spring - 如何在 Spring 中从 WebRequest 获取请求的 URI?

转载 作者:行者123 更新时间:2023-12-04 09:57:32 31 4
gpt4 key购买 nike

我正在使用 @ControllerAdvice 处理 REST 异常和 ResponseEntityExceptionHandler在 Spring Rest Web 服务中。到目前为止一切正常,直到我决定添加 URI进入 的路径(发生异常的路径) BAD_REQUEST 回复。

@ControllerAdvice
public class RestResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {

@Override
protected ResponseEntity<Object> handleHttpMessageNotReadable(HttpMessageNotReadableException ex,
HttpHeaders headers, HttpStatus status, WebRequest request) {
logger.info(request.toString());
return handleExceptionInternal(ex, errorMessage(HttpStatus.BAD_REQUEST, ex, request), headers, HttpStatus.BAD_REQUEST, request);
}

private ApiError errorMessage(HttpStatus httpStatus, Exception ex, WebRequest request) {
final String message = ex.getMessage() == null ? ex.getClass().getName() : ex.getMessage();
final String developerMessage = ex.getCause() == null ? ex.toString() : ex.getCause().getMessage();
return new ApiError(httpStatus.value(), message, developerMessage, System.currentTimeMillis(), request.getDescription(false));
}

ApiError 只是一个 Pojo 类:
public class ApiError {

private Long timeStamp;
private int status;
private String message;
private String developerMessage;
private String path;
}

但是 WebRequest 没有给出任何 api 来获取请求失败的路径。我试过: request.toString()返回 -> ServletWebRequest: uri=/signup;client=0:0:0:0:0:0:0:1 request.getDescription(false)返回 -> uri=/注册 getDescription非常接近要求,但不符合要求。有没有办法只得到uri部分?

最佳答案

找到了解决办法。类型转换 WebRequestServletWebRequest解决了目的。

((ServletWebRequest)request).getRequest().getRequestURI().toString()

返回完整路径 - http://localhost:8080/signup

关于spring - 如何在 Spring 中从 WebRequest 获取请求的 URI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51921635/

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