如何解决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类似的问题。我相信一些相关的区别是:
- 客户端是另一个Web服务,尽管它位于同一台物理计算机上,并且由同一位开发人员维护。
- 具有/ car和/ car-value端点的应用程序连接到包含汽车信息(即
Car
是实体)的数据库。 - 某些客户不需要汽车类型,VIN或标准ID。因此,从
/car
获取汽车数据时,他们通常不会存储该数据。如果他们将Car
对象传递给/ car-value,则必须开始存储这些值。他们需要知道这些值是用来获得汽车价值的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。