原文: https://howtodoinjava.com/jersey/jersey-how-to-set-cookie-in-rest-api-response/

在此示例中,我们将学习为 Jersey REST API 发送的 HTTP 响应设置 cookie。 本示例利用javax.ws.rs.core.Response将 Cookie 设置为发送到 REST 客户端的 REST 响应中。

设置 Cookie 语法

要在 REST API 响应中设置 Cookie,请获取Response参考并使用其cookie()方法。

  1. Response.ok().entity(list).cookie(new NewCookie("cookieResponse", "cookieValueInReturn")).build();

Rest API 示例代码

我在下面编写了 REST API 进行测试。

  1. @GET
  2. @Produces(MediaType.APPLICATION_JSON)
  3. @Consumes(MediaType.APPLICATION_JSON)
  4. public Response getAllEployees()
  5. {
  6. Employees list = new Employees();
  7. list.setEmployeeList(new ArrayList<Employee>());
  8. list.getEmployeeList().add(new Employee(1, "Lokesh Gupta"));
  9. list.getEmployeeList().add(new Employee(2, "Alex Kolenchiskey"));
  10. list.getEmployeeList().add(new Employee(3, "David Kameron"));
  11. return Response.ok().entity(list).cookie(new NewCookie("cookieResponse", "cookieValueInReturn")).build();
  12. }

演示

现在,使用 Jersey 客户端代码在 REST API 之上进行调用。

  1. public static void main(String[] args)
  2. {
  3. Client client = ClientBuilder.newClient( new ClientConfig().register( LoggingFilter.class ) );
  4. WebTarget webTarget = client.target("http://localhost:8080/JerseyDemos/rest").path("employees");
  5. Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON);
  6. Response response = invocationBuilder.get();
  7. Employees employees = response.readEntity(Employees.class);
  8. List<Employee> listOfEmployees = employees.getEmployeeList();
  9. System.out.println(response.getCookies());
  10. System.out.println(response.getStatus());
  11. System.out.println(Arrays.toString( listOfEmployees.toArray(new Employee[listOfEmployees.size()]) ));
  12. }
  1. Output:
  2. {cookieResponse=cookieResponse=cookieValueInReturn;Version=1}
  3. 200
  4. [Employee [id=1, name=Lokesh Gupta], Employee [id=2, name=Alex Kolenchiskey], Employee [id=3, name=David Kameron]]

祝您学习愉快!