java - 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
}
这个问题与这篇文章类似。我相信一些相关的差异是:
- 客户端是另一个 Web 服务,尽管位于同一台物理机器上,并且由相同的开发人员维护。
- 具有 /car 和 /car-value 端点的应用程序连接到包含汽车信息的数据库(即
Car
实体)。 - 有些客户不需要汽车类型、VIN 或标准 ID。因此,他们通常不会在从
/car
. 如果他们将Car
对象传递给 /car-value,他们将不得不开始存储这些值。他们需要知道这些值用于获取汽车价值。
解决方案
推荐阅读
- r - 如何根据 R 中的某些模式导入大量数据集
- sql - 输入“来自”不匹配。期待:'on','using' 在 Athena
- .net - 更新多目标项目的包引用
- c# - 如何强制 Visual Studio 2022 创建带有命名空间和类的控制台项目(就像过去的好日子一样)?
- flutter - 我们可以与从事同一项目的其他开发人员共享我的“API KEY”吗?
- c - Windows API:可以以编程方式移动 Windows IME 输入框吗?
- multilingual - 如何削减 Huggingface 上共享的预训练多语言模型?
- css - 未检测到 xpath 跨度
- batch-file - 批处理文件从另一个文件的文件中添加一列,第一个字段匹配,第二个文件具有大列
- terraform - 在 oci 中获取子网值时出现 Terraform 错误