javax.ws.rs.core.Cookie vs javax.ws.rs.core.NewCookie ,有什么区别?
javax.ws.rs.core.Cookie vs javax.ws.rs.core.NewCookie , What is the difference?
我在 JAX-RS API javax.ws.rs.core.Cookie
和 javax.ws.rs.core.NewCookie
中发现了两个 类。一个比另一个有什么优势?
我想知道推荐使用哪一个以及什么时候使用?
提前致谢:)
不是推荐,而是合适。一种用于请求,一种用于响应。您可以看到两个不同的 javadoc。
Represents the value of a HTTP cookie, transferred in a request.
Used to create a new HTTP cookie, transferred in a response.
NewCookie
,当在 Response
中发送时,会设置一个 Set-Cookie
响应 header 与 cookie 信息, Cookie
将使用 cookie 信息设置 Cookie
request header。这是根据 HTTP 规范。
用法示例:
@GET
public Response get() {
return Response.ok("blah")
.cookie(new NewCookie("foo-cookie", "Whosebug2020"))
.build();
}
[..]
Client client = ClientBuilder.newClient();
Response response = client
.target("https://cookieurl.com/api/some-resource")
.request()
.cookie(new Cookie("foo-cookie", "Whosebug2020"))
.get();
@Path("some-resource")
public class SomeResource {
@POST
public Response post(@CookieParam("foo-cookie") Cookie cookie) {
}
}
通常在客户端,您不会像我那样手动创建Cookie
。大多数时候,您会从初始请求的响应中获取 cookie,然后将这些 cookie 发回。这意味着在 Response
中,您将有 NewCookie
s 并且您需要将它们转换为 Cookie
s 以用于下一个请求。这可以通过调用 newCookie.toCookie()
轻松完成
Map<String, NewCookie> cookies = response.getCookies();
Invocation.Builder ib = target.request();
for (NewCookie cookie: cookies.values()) {
ib.cookie(cookie.toCookie());
}
Response response = ib.get();
我在 JAX-RS API javax.ws.rs.core.Cookie
和 javax.ws.rs.core.NewCookie
中发现了两个 类。一个比另一个有什么优势?
我想知道推荐使用哪一个以及什么时候使用?
提前致谢:)
不是推荐,而是合适。一种用于请求,一种用于响应。您可以看到两个不同的 javadoc。
Represents the value of a HTTP cookie, transferred in a request.
Used to create a new HTTP cookie, transferred in a response.
NewCookie
,当在 Response
中发送时,会设置一个 Set-Cookie
响应 header 与 cookie 信息, Cookie
将使用 cookie 信息设置 Cookie
request header。这是根据 HTTP 规范。
用法示例:
@GET
public Response get() {
return Response.ok("blah")
.cookie(new NewCookie("foo-cookie", "Whosebug2020"))
.build();
}
[..]
Client client = ClientBuilder.newClient();
Response response = client
.target("https://cookieurl.com/api/some-resource")
.request()
.cookie(new Cookie("foo-cookie", "Whosebug2020"))
.get();
@Path("some-resource")
public class SomeResource {
@POST
public Response post(@CookieParam("foo-cookie") Cookie cookie) {
}
}
通常在客户端,您不会像我那样手动创建Cookie
。大多数时候,您会从初始请求的响应中获取 cookie,然后将这些 cookie 发回。这意味着在 Response
中,您将有 NewCookie
s 并且您需要将它们转换为 Cookie
s 以用于下一个请求。这可以通过调用 newCookie.toCookie()
Map<String, NewCookie> cookies = response.getCookies();
Invocation.Builder ib = target.request();
for (NewCookie cookie: cookies.values()) {
ib.cookie(cookie.toCookie());
}
Response response = ib.get();