【发布时间】:2018-11-07 17:20:44
【问题描述】:
给定多个 REST 资源来收集订单信息。
-
/order/{id} -
/order/{id}/positions -
/order/{id}/invoice /order/{id}/shipment
在 Srping Boot 2 应用程序中,它跨多个控制器实现,例如OrderController、InvoiceController等
目前每个控制器都使用 OrderRepository 来确保具有给定id 的订单存在。否则会抛出异常。它始终是相同的复制代码。
@RestController
public class OrderController {
// ...
@GetMapping("order/{id}")
public Order getCustomer(@PathVariable final Integer id) {
return this.orderRepository.findById(id)
.orElseThrow(() -> new IllegalArgumentException("order not found"));
}
}
框架是否提供回调来编写命令id 只检查一次?
我找到了AntPathMatcher,但它似乎不是正确的方法,因为它只提供了一个布尔接口。
【问题讨论】:
-
你不会在每个映射中都需要那个特定的
Order吗?为什么不将orderRepository.findById(..).orElseThrow(..)放在一个单独的方法中,并为每个方法调用它? -
@g00glen00b 我不是在每种情况下都需要订单。调用特定方法以确保验证是当前实现。但是在创建以
/order/{id}/开头的新方法时,您可能会忘记调用
标签: java hibernate rest spring-mvc spring-boot