使用 javax.ws.rs.core.Response将 cookie 设置为发送到 REST 客户端的 REST 响应。
设置 Cookie 语法
要在 REST API 响应中设置 cookie,请获取 Response引用并使用它的 cookie()方法。
Response.ok().entity(list).cookie(new NewCookie("cookieResponse", "cookieValueInReturn")).build();
on It Road.com
REST API 示例代码
我在 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, "JackLi Gupta"));
list.getEmployeeList().add(new Employee(2, "JackLi Kolenchiskey"));
list.getEmployeeList().add(new Employee(3, "Tomm 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()]) ));
}
输出:
{cookieResponse=cookieResponse=cookieValueInReturn;Version=1}
200
[Employee [id=1, name=JackLi Gupta], Employee [id=2, name=JackLi Kolenchiskey], Employee [id=3, name=Tomm Kameron]]
日期:2020-09-17 00:16:32 来源:oir作者:oir
