簡體   English   中英

如何從JAX-RS javax.ws.rs.core.Response獲取原始請求的URI

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM