RESTful Web服务客户端-传递对象或仅对象ID

问题描述

我有一个带有端点(/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类似的问题。我相信一些相关的区别是:

  1. 客户端是另一个Web服务,尽管它位于同一台物理计算机上,并且由同一位开发人员维护。
  2. 具有/ car和/ car-value端点的应用程序连接到包含汽车信息(即Car是实体)的数据库。
  3. 某些客户不需要汽车类型,VIN或标准ID。因此,从/car获取汽车数据时,他们通常不会存储该数据。如果他们将Car对象传递给/ car-value,则必须开始存储这些值。他们需要知道这些值是用来获得汽车价值的。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...