Java Controller 调用同一个 Service 方法,不同请求参数转换映射技巧
在 Java 中,Controller 里面调用同一个 Service 方法,但是请求参数不同,在不冗余请求体的情况下,可以使用 JavaBean 来作为请求参数的封装对象,通过在不同的 Controller 方法中对 JavaBean 对象的属性进行赋值,从而实现不同的请求参数的转换映射。具体实现可以使用 Spring 框架中的 @RequestBody 和 @RequestParam 注解来自动绑定请求参数到 JavaBean 对象的属性中。在 Service 方法中只需要接收 JavaBean 对象作为参数即可。
例如:
@RestController
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/user")
public void addUser(@RequestBody UserAddRequest request) {
User user = new User();
user.setName(request.getName());
user.setAge(request.getAge());
userService.addUser(user);
}
@GetMapping("/user")
public void getUser(@RequestParam("id") Long id) {
userService.getUserById(id);
}
}
@Service
public class UserService {
public void addUser(User user) {
// do something
}
public User getUserById(Long id) {
// do something
}
}
public class UserAddRequest {
private String name;
private Integer age;
// getter and setter
}
在 addUser 方法中,使用 @RequestBody 注解将请求体中的 JSON 数据绑定到 UserAddRequest 对象。在 getUser 方法中,使用 @RequestParam 注解获取 URL 参数 id。
通过这种方式,我们可以将不同的请求参数转换为 User 或 Long 对象,然后传递给 UserService 中的对应方法,从而避免冗余的请求体代码。
原文地址: https://www.cveoy.top/t/topic/mUOK 著作权归作者所有。请勿转载和采集!