我对springboot和web服务非常陌生。我实现了springboot应用程序来将产品保存到数据库中。很好用。现在我想用产品价格来做一些计算。
例如,我有所有产品的单价。当用户从前端选择产品和他想要购买的单位数时,我会将产品id和单位数传递给api方法,该方法将计算他想要支付的总金额。
我有下面的方法来获得产品的详细信息,根据产品id。
@GetMapping("/products/{id}")
public ResponseEntity<Product> getProductById(@PathVariable(value = "id") Long productId)
throws ResourceNotFoundException {
Product product = productRepository.findById(productId)
.orElseThrow(() -> new ResourceNotFoundException("Product not found for this id :: " + productId));
return ResponseEntity.ok().body(product);
}
它给了我以下的回答。
{“id”:8,“name”:“企鹅耳朵”,“cartonprice”:175,“unitprice”:9.0,“unitforcarton”:20}
所以我想在另一种方法中使用这个单价。我该怎么做?
2条答案
按热度按时间dy2hfwbg1#
通常是
Controller
呼叫Service
层的逻辑,如果需要,调用Repository
水平。所以在你的情况下,你可以有一个
Service
使用的公共方法初始化getProductById
. 此方法返回一个对象。不是json。这个
Controller
我会叫这个service
类并将对象转换为json。您的新端点将调用
Service
班级(也许吧)buyMe
?).以及
buyMe
是一个位于同一位置的方法Service
作为getProductById
. 所以从一个方法调用另一个方法很容易。u0njafvf2#
您应该遵循以下方法:
Controller
ServiceRepository
首先在Controller
我们负责端点,并将工作委托给Service
. 对于您的用例,我将使用DTO
(数据传输对象)。基本上,您可以在一个java pojo中打包一些不同的属性,如下所示:然后在控制器中:
然后我们就有了负责业务逻辑的服务: