问题描述
我有一个带有端点(/car
)的Web服务应用程序,该应用程序返回存储在数据库中的可用汽车列表。然后,同一应用程序具有另一个端点,该端点在给定日期返回汽车的价值。
在请求汽车价值时,客户应该传递汽车ID列表还是汽车对象列表?例如,使用Spring REST控制器:
@RestController
@RequiredArgsConstructor
@RequestMapping("/car-value")
public class CarValueController {
private final CarRepository carRepo;
private final SportsCarClient sportsCarClient;
private final StandardCarClient standardCarClient;
@GetMapping
public Map<Long,BigDecimal> getTotalReturn(Set<Long> carIds,LocalDate valuationDate) {
List<Car> cars = carRepo.findAllById(carIds);
BigDecimal value;
for (Car car: cars) {
if (car.getType().equals(CarType.SPORTS_CAR)) {
//get from value from sports car service
value = sportsCarClient.getValue(car.getVin());
} else {
value = standardCarClient.getValue(car.getStandardId());
}
// put value in map
}
//return map
}
或
@RestController
@RequiredArgsConstructor
@RequestMapping("/car-value")
public class CarValueController {
private final SportsCarClient sportsCarClient;
private final StandardCarClient standardCarClient;
@PostMapping
public Map<Long,BigDecimal> getTotalReturn(@RequestBody Set<Car> cars,LocalDate valuationDate) {
BigDecimal value;
for (Car car: cars) {
if (car.getType().equals(CarType.SPORTS_CAR)) {
//get from value from sports car service
value = sportsCarClient.getValue(car.getVin());
} else {
value = standardCarClient.getValue(car.getStandardId());
}
// put value in map
}
//return map
}
这是与this post类似的问题。我相信一些相关的区别是:
- 客户端是另一个Web服务,尽管它位于同一台物理计算机上,并且由同一位开发人员维护。
- 具有/ car和/ car-value端点的应用程序连接到包含汽车信息(即
Car
是实体)的数据库。 - 某些客户不需要汽车类型,VIN或标准ID。因此,从
/car
获取汽车数据时,他们通常不会存储该数据。如果他们将Car
对象传递给/ car-value,则必须开始存储这些值。他们需要知道这些值是用来获得汽车价值的。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)