自定义响应头泽西/ Java
我正在努力实现以下目标。
从Request中读取自定义标头及其值:
name: username
现在,作为响应,我想在HTTP响应中返回相同的头name:value
对。
我正在使用Jersey 2.0实现的JAX-RS webservice。
当我发送请求URL Http://localhost/test/
,请求头也被传递(暂时,虽然Firefox插件 – 硬编码)。
收到该URL的请求后,将调用以下方法:
@GET @Produces(MediaType.APPLICATION_JSON) public UserClass getValues(@Context HttpHeaders header) { MultivaluedMap headerParams = header.getRequestHeaders(); String userKey = "name"; headerParams.get(userKey); // ... return user_object; }
我怎么能实现这个目标? 任何指针都会很棒!
只需注入一个@Context HttpServletResponse response
作为方法参数。 更改标题
@Produces(MediaType.APPLICATION_JSON) public UserClass getValues(@Context HttpHeaders header, @Context HttpServletResponse response) { response.setHeader("yourheadername", "yourheadervalue"); ... }
我认为使用javax.ws.rs.core.Response
更优雅,它是Jersey的一部分。 只是为了扩展之前的答案,这是一个简单的例子:
@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; }
以UserClass
作为实体返回Response
(来自JAX-RS的类)。 在Response
您可以设置HTTP标头。