[英]Missing dependency for method public javax.ws.rs.core.Response (Upload File JAX-RS)
[英]How to get the original requested URI from JAX-RS javax.ws.rs.core.Response
我正在尝试为JAX-RS写一个自定义的ExceptionMapper
类。 我想以某种方式从JAX-RS javax.ws.rs.core.Response
对象读取原始请求的URI。
当我在调试模式下使用IntelliJ IDEA检查响应对象时,可以在以下路径下看到此信息:response> context> resolveUri其中
context
类型是org.glassfish.jersy.client.ClientResponse
。 此类具有resolvedUri
变量,其中包含我需要的信息。
我能以某种方式获得此信息吗? 如何编写我的getRequestUri(response)
方法?
public class MyExceptionMapper implements ExceptionMapper<WebApplicationException> {
@Override
public Response toResponse(WebApplicationException error) {
Response response = error.getResponse();
ErrorResponse errorResponse = ErrorResponseBuilder
.builder()
.httpStatus(getDefaultStatusCodeIfNull(response))
.errorMessage(getCustomErrorMessage(response))
.requestedUri(getRequestedUri(response)) <--------- HOW TO READ IT?
.build();
return Response
.status(errorResponse.getHttpStatus())
.type(ExtendedMediaType.APPLICATION_JSON)
.entity(errorResponse)
.build();
}
}
采用
@Context私有HttpServletRequest servletRequest;
并使用HttpServletRequest.getRequestURI()
public class MyExceptionMapper implements
ExceptionMapper<WebApplicationException> {
@Context
private HttpServletRequest servletRequest;
@Override
public Response toResponse(WebApplicationException error) {
Response response = error.getResponse();
ErrorResponse errorResponse = ErrorResponseBuilder
.builder()
.httpStatus(getDefaultStatusCodeIfNull(response))
.errorMessage(getCustomErrorMessage(response))
.requestedUri(servletRequest.getRequestURI())
.build();
return Response
.status(errorResponse.getHttpStatus())
.type(ExtendedMediaType.APPLICATION_JSON)
.entity(errorResponse)
.build();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.