【发布时间】:2018-08-08 18:09:32
【问题描述】:
我正在尝试制作一种将产品添加到购物车中的资源。我正在尝试将产品添加到购物车并将购物车保存为 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 设置正确,例如它设置了正确的值:[{\"productId\":1,\"quantity\":2}] 如果我添加一个带有id 1 和数量 2。 问题是,当我第二次运行时,作为 CookieParam 接收的 cookie 的值不正确,在本例中为 [{\"productId\":1 。 我正在使用 Postman 对此进行测试,并在正文中发送带有 JSON {"productId":1, "quantity":2} 的 POST 请求。 我做错了什么?
【问题讨论】:
标签: java json jakarta-ee cookies jax-rs