自定义响应标头泽西岛/Java

2022-09-01 13:33:22

我正在努力实现以下目标。

从请求中读取自定义标头及其值:

name: username

现在,在响应时,我想在HTTP响应中返回相同的标头对。name:value

我正在使用 JAX-RS Webservice 的 Jersey 2.0 实现。

当我发送请求URL时,请求标头也会被传递(暂时,通过Firefox插件 - 硬编码它们)。Http://localhost/test/

在收到对该 URL 的请求时,将调用以下方法:

@GET
@Produces(MediaType.APPLICATION_JSON)
public UserClass getValues(@Context HttpHeaders header) {
    MultivaluedMap<String, String> headerParams = header.getRequestHeaders();
    String userKey = "name";
    headerParams.get(userKey);

    // ...

    return user_object;
}

我怎样才能做到这一点?任何指针都会很棒!


答案 1

我认为使用更优雅,它是泽西岛的一部分。只是为了扩展前面的答案,这里有一个简单的例子:javax.ws.rs.core.Response

    @GET
    @Produces({ MediaType.APPLICATION_JSON })
    @Path("/values")
    public Response getValues(String body) {

        //Prepare your entity

        Response response = Response.status(200).
                entity(yourEntity).
                header("yourHeaderName", "yourHeaderValue").build();

        return response;
    }

答案 2

只需注入 a 作为方法参数。更改其上的标头@Context HttpServletResponse response

@Produces(MediaType.APPLICATION_JSON)
public UserClass getValues(@Context HttpHeaders header, @Context HttpServletResponse response) {
    response.setHeader("yourheadername", "yourheadervalue");
    ...
}