#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));