在搜索 api 中为所有受支持的过滤器参数使用 pojo 而不是使用 @RequestParam 来获取每个参数是不是很糟糕?
假设我有用于搜索汽车的 API 和支持的汽车过滤器
所以我应该这样写
@RequestMapping(value = "", method = {RequestMethod.GET})
public ResponseEntity<ApiResponse> searchCars(
@RequestParam(value = "brand", required = false) String brand,
@RequestParam(value = "model", required = false) String model,
@RequestParam(value = "variant", required = false) String variant,
@RequestParam(value = "type", required = false) String type,
@RequestParam(value = "color", required = false) String color
)
或者我可以创建 SearchCarFilter 并在那里添加相应的字段
将对象与所有搜索字段一起使用有一些优点,例如
您可以在不影响方法签名的情况下添加或删除新字段,只需要添加/删除POJO中的字段并更改Service层的逻辑即可。
如果其他 API 需要,也可以重用此 POJO。
使用 POJO 添加验证更简单。