在此示例中,我们将学习将 cookie 设置为 Jersey REST API 发送的 HTTP 响应。此示例使用 javax.ws.rs.core.Response
将 cookie 设置为发送给 REST 客户端的 REST 响应。
要在 REST API 响应中设置 cookie,请获取 Response
引用并使用它的 cookie()
方法。
Response.ok().entity(list).cookie(new NewCookie("cookieResponse", "cookieValueInReturn")).build();
为了测试目的,我在下面编写了 REST API。
@GET @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public Response getAllEployees() { Employees list = new Employees(); list.setEmployeeList(new ArrayList<Employee>()); list.getEmployeeList().add(new Employee(1, "Lokesh Gupta")); list.getEmployeeList().add(new Employee(2, "Alex Kolenchiskey")); list.getEmployeeList().add(new Employee(3, "David Kameron")); return Response.ok().entity(list).cookie(new NewCookie("cookieResponse", "cookieValueInReturn")).build(); }
现在让我们使用 Jersey 客户端代码调用上面的 REST API。
public static void main(String[] args) { Client client = ClientBuilder.newClient( new ClientConfig().register( LoggingFilter.class ) ); WebTarget webTarget = client.target("http://localhost:8080/JerseyDemos/rest").path("employees"); Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON); Response response = invocationBuilder.get(); Employees employees = response.readEntity(Employees.class); List<Employee> listOfEmployees = employees.getEmployeeList(); System.out.println(response.getCookies()); System.out.println(response.getStatus()); System.out.println(Arrays.toString( listOfEmployees.toArray(new Employee[listOfEmployees.size()]) )); }
Output: {cookieResponse=cookieResponse=cookieValueInReturn;Version=1} 200 [Employee [id=1, name=Lokesh Gupta], Employee [id=2, name=Alex Kolenchiskey], Employee [id=3, name=David Kameron]]
快乐学习!!
标签2: Jersey地址:https://www.cundage.com/article/jersey-how-to-set-cookie-in-rest-api-response.html