考虑以下方法:
@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?
答案 0 :(得分:10)
您可以在方法的参数上使用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
实例,该实例能够从字符串&#34;&#34;转换类型。List<T>
,Set<T>
或SortedSet<T>
,其中T
满足上述2,3,4或5。生成的集合是只读的。