[英]JAX-RS How to get a cookie from a request?
请考虑以下方法:
@POST
@Path("/search")
public SearchResponse doSearch(SearchRequest searchRequest);
我希望这种方法能够了解发出请求的用户。 因此,我需要访问与用户发送的SearchRequest
对象相关联的cookie。
在SearchRequest类中,我只有这个实现:
public class SearchRequest {
private String ipAddress;
private String message;
...
这是请求:
{
"ipAddress":"0.0.0.0",
"message":"foobarfoobar"
}
除了此请求,浏览器还会在用户登录系统时发送cookie集。
我的问题是如何在doSearch
方法的上下文中访问cookie?
您可以在方法的参数上使用javax.ws.rs.CookieParam
注释。
@POST
@Path("/search")
public SearchResponse doSearch(
SearchRequest searchRequest,
@CookieParam("cookieName") Cookie cookie
) {
//method body
}
这里使用的Cookie
类是javax.ws.rs.core.Cookie
但您不必使用它。
您可以在任何参数上使用此注释,只要:
Cookie
(与上例中的相同) String
参数的构造函数 valueOf
或fromString
的静态方法,它接受一个String
参数(例如,参见Integer.valueOf(String)
) ParamConverterProvider
JAX-RS扩展SPI的注册实现,它返回一个ParamConverter
实例,该实例能够为该类型进行“from string”转换。 List<T>
, Set<T>
或SortedSet<T>
,其中T
满足上面的2,3,4或5。 生成的集合是只读的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.