Spring Rest中的会话

问题描述 投票:0回答:1

你好,我在春季休假时遇到问题,我每次在会议中都为null,这是我的课程

        @GetMapping("/shoppingCart/addProduct/{productId}")
    public ResponseEntity<Cart> addProductToCart(@PathVariable("productId") Long productId,HttpServletRequest  request) throws AppException {
        Product product = productService.getProduct(productId);

        Cart cart= (Cart) request.getSession().getAttribute("myCart");

        // If null, create it.
        if (cart == null) {
            cart = new Cart();
            request.getSession().setAttribute("myCart", cart);
        }

        cart.addProduct(product, 1);
        return new ResponseEntity<>(cart,HttpStatus.CREATED);
    }

    @GetMapping("/shoppingCart")
    public ResponseEntity<Cart> shoppingCart(HttpServletRequest  request) {
     cart = (Cart) request.getSession().getAttribute("myCart");
     return new ResponseEntity<>(cart,HttpStatus.CREATED);
    }

此行request.getSession().getAttribute("myCart")返回null,并且当我在购物车中添加产品时,它第一次保存在会话中,此后,当我尝试添加其他产品时,我的会话为空。

谢谢

spring-boot servlets spring-rest
1个回答
0
投票

RestFul服务在本质上被设计为无状态的,因此,您首先不应该在Rest API中使用会话。但是,如果按照某种业务逻辑需要使用会话,则应该使用Spring MVC而不是REST,即,应该在类中使用@Controller批注,而不是@RestController

© www.soinside.com 2019 - 2024. All rights reserved.