Custom response header Jersey/Java
44,397
Solution 1
Just inject a @Context HttpServletResponse response
as a method argument. Change the headers on that
@Produces(MediaType.APPLICATION_JSON)
public UserClass getValues(@Context HttpHeaders header, @Context HttpServletResponse response) {
response.setHeader("yourheadername", "yourheadervalue");
...
}
Solution 2
I think using javax.ws.rs.core.Response
is more elegant and it is a part of Jersey. Just to extend previous answer, here is a simple example:
@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;
}
Author by
Namenoobie
Updated on July 23, 2022Comments
-
Namenoobie almost 2 years
I am trying to achieve the following.
Read a custom header and its value from Request:
name: username
Now, on response, I would like to return the same header
name:value
pair in HTTP response.I am using Jersey 2.0 implementation of JAX-RS webservice.
When I send the request URL
Http://localhost/test/
, the request headers are also passed (for the time being, though Firefox plugin - hardcoding them).On receiving the request for that URL, the following method is invoked:
@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; }
How may I achieve this? Any pointers would be great!