как преобразовать тип MessageResponse в ResponseEntity возвращаемый тип

#java #spring-boot

#java #пружинный ботинок

Вопрос:

У меня есть класс обслуживания, который имеет следующий метод

NewCartService.java:

 @Service
public class NewCartService {

    @Autowired
    private LoginRepository loginRepository;
    @Autowired
    private ProductRepository productRepository;
    @Autowired
    private CartRepository cartRepository;
    @Autowired
    private CartDao cartDao;
    @Autowired
    private Mailer mailService;

    public MessageResponse order(List<Cart> cart) throws MessagingException {

        for (Cart cart1 : cart) {
            String userName = cart1.getUserName();
            String password = cart1.getPassword();
            String productName = cart1.getProductName();
            String price = cart1.getPrice();
            String discription = cart1.getDiscription();

            if (!cartRepository.existsAllByUserNameAndPasswordAndProductNameAndPriceAndDiscription(userName, password, productName, price, discription)) {
                throw new ResourceNotFoundException("not found");
            }
            MustacheFactory mf = new DefaultMustacheFactory();
            Mustache m = mf.compile("cart.mustache");

            StringWriter writer = new StringWriter();
            String messageText = "";

            List<Cart> carts = cartDao.getCart(cart);

            Map<String, Object> params = new HashMap<>();
            params.put("carts", carts);
            Writer m1 = m.execute(writer, params);
            System.out.println(m1);
            messageText = m1.toString();

            mailService.sendMail("/*email address*/", "/*email address*/", messageText, "demo", true);
            cartRepository.deleteByUserNameAndPasswordAndProductNameAndPriceAndDiscription(userName, password, productName, price, discription);

            return new MessageResponse("product Successfully ordered from cart");
        }
        throw new BadArgumentsException("bad arguments");
    }

}
 

У меня есть контроллер

CartController.java:

 @RestController
public class CartController {

    @Autowired
    public CartService cartService;

    @GetMapping("/orders")
    public ResponseEntity<?> orders(@Valid @RequestBody List<Cart> carts) throws MessagingException {
        return newCartService.order(carts);// it gives error because i need to convert MessageResponse into the ResponseEntity<?>
    }
}
 

Теперь мой вопрос заключается в том, как я могу преобразовать эти MessageResponse в ResponseEntity<?> ?

пожалуйста, предложите мне код, чтобы я мог решить эту проблему, и заранее благодарю.

Комментарии:

1. Что ваша спецификация API хочет, чтобы GET / orders возвращали? Что такое класс MessageResponse?

Ответ №1:

Вы пробовали:

 return new ResponseEntity<>(newCartService.order(carts), HttpStatus.OK);
 

или, как предложено в комментариях:

 return ResponseEntity.ok(newCartService.order(carts));
 

Комментарии:

1. более современное написание: ResponseEntity<>.ok(…)

Ответ №2:

Кроме того, если вы хотите установить заголовок с объектом ответа, вы можете попробовать:

 HttpHeaders headers = new HttpHeaders();
headers.add("Custom-Header", "<header>");
        
return new ResponseEntity<>(newCartService.order(carts), headers, HttpStatus.OK);
 

альтернативный вариант, который вы можете использовать:

 return ResponseEntity.ok()
        .header("Custom-Header", "<header>")
        .body(newCartService.order(carts));