Java Controller 调用同一个 Service 方法,处理不同参数的最佳实践
可以使用 DTO (Data Transfer Object) 来解决这个问题。
DTO 是一种数据传输对象,它是一个简单的 Java 类,用于在 controller 和 service 之间传输数据。在 controller 中,根据请求参数创建 DTO 对象,然后将 DTO 对象传递给 service 方法。在 service 中,DTO 对象可以被映射成 service 方法需要的对象。
例如,假设有一个用户注册的功能,用户需要提供以下信息:用户名、密码、电子邮件地址。在 controller 中,可以创建一个名为 UserRegistrationDTO 的类,它包含这些信息:
public class UserRegistrationDTO {
private String username;
private String password;
private String email;
// getters and setters
}
然后,在 controller 中,可以根据请求参数创建一个 UserRegistrationDTO 对象,并将其传递给 service 方法:
@PostMapping("/register")
public ResponseEntity<?> registerUser(@RequestBody UserRegistrationDTO userRegistrationDTO) {
userService.registerUser(userRegistrationDTO);
return ResponseEntity.ok().build();
}
在 service 中,可以编写一个名为 registerUser 的方法,它接受一个 UserRegistrationDTO 对象,并将其映射成 User 对象:
public void registerUser(UserRegistrationDTO userRegistrationDTO) {
User user = new User();
user.setUsername(userRegistrationDTO.getUsername());
user.setPassword(userRegistrationDTO.getPassword());
user.setEmail(userRegistrationDTO.getEmail());
// save user to database
}
这种方式可以避免冗余的请求体,同时可以将请求参数转换成 service 方法需要的对象。
原文地址: https://www.cveoy.top/t/topic/mUM5 著作权归作者所有。请勿转载和采集!