我试图制作一个将产品添加到购物车中的资源。我尝试将产品添加到购物车,并将购物车保存为Cookie中的JSON字符串。 (这里Cart对象有2个字段,productId和quantity)
@POST
@Path("/update")
@Produces(MediaType.APPLICATION_JSON)
public Response updateShoppingCart(@CookieParam(COOKIE_NAME) javax.ws.rs.core.Cookie cookie, Cart cart) {
NewCookie newCookie = null;
ObjectMapper mapper = new ObjectMapper();
if (cookie !=null){
try {
List<Cart> shoppingCart = mapper.readValue(cookie.getValue(), new TypeReference<List<Cart>>() {
});
//the case where there is already something in the shopping cart
//...
String jsonString = mapper.writeValueAsString(shoppingCart);
newCookie = new NewCookie(COOKIE_NAME, jsonString,"/", "", "shopping-cart", MAX_AGE, false);
} catch (IOException e) {
e.printStackTrace();
}
}else{
List<Cart> carts = new ArrayList<>();
carts.add(cart);
try {
String jsonString = mapper.writeValueAsString(carts);
newCookie = new NewCookie(COOKIE_NAME, jsonString,"/", "", "shopping-cart", MAX_AGE, false);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
return Response.ok(newCookie).cookie(newCookie).build();
}
第一次运行时,cookie设置正确,例如它设置正确的值:[{\&#34; productId \&#34;:1,\&#34;数量\&#34 ;:2}]如果我添加id为1且数量为2的产品。 问题是,当我第二次运行此Cookie时,Cookie收到的cookie值不正确,在这种情况下为[{\&#34; productId \&#34;:1。 我正在使用Postman对此进行测试,并在正文中发送带有JSON {&#34; productId&#34;:1,&#34;数量&#34;:2}的POST请求。 我做错了什么?
答案 0 :(得分:1)
Cookie必须放在标题中,而不是正文中。类似的东西:
Cookie: name=value; name2=value2; name3=value3
对于邮递员,请参阅:https://www.getpostman.com/docs/postman/sending_api_requests/cookies
更新:根据我的经验,邮递员有时不会发送cookie。尝试将postman命令转换为curl命令(请参阅:https://www.getpostman.com/docs/postman/sending_api_requests/generate_code_snippets),然后确保curl命令在标头或-b参数中有cookie(参见:https://curl.haxx.se/docs/manpage.html)