在response中设置cookie,在JAX-RS的API中需要怎么做?
首先需要用到一个类:javax.ws.rs.core.NewCookie。这个类是继承自cookie类的。
首先资源类则不能返回正常的HTTP实体了。因为这样就没法设置cookie。
举个例子,下面这种方法就没法添加cookie了。
@POST
public String post(){
return"hello world";
}
如果要操作cookie,就必须返回一个更复杂的对象,这就是javax.ws.rs.core.Response类。
这个类可以设置各种HTTP head,其中就包括了cookie。
Response由于是一个抽象类,所以不能new出来,但是有静态方法。
常见的是 Response.ok,这个方法指定了返回的http状态码为200。
但是这个ok方法返回的并不是Response对象,而是ResponseBuilder。
ResponseBuilder中有cookie方法和builder方法,这样才最终产生一个Response对象。
下面是代码示例:
@GET
public Response service(){
return Response.ok("hello world").cookie(new NewCookie("A","B")).build();
}
这样在返回的HTTP头中就加上了
Set-Cookie:A=B; Version=1; Discard