我正在学习spring rest api,并编写了以下方法将数据保存到数据库中。
@GetMapping(path="/add") // Map ONLY GET Requests
public @ResponseBody String addNewUser (@RequestParam String name
, @RequestParam String email) {
// @ResponseBody means the returned String is the response, not a view name
// @RequestParam means it is a parameter from the GET or POST request
User n = new User();
n.setName(name);
n.setEmail(email);
userRepository.save(n);
return "Saved";
}
现在,我想编写可获取用户ID的put查询,然后更新名称或电子邮件。另外,我需要检查用户名和电子邮件不应为空,并且电子邮件也应采用有效格式。
如何使用@putmapping构造我的方法来执行任务。
答案 0 :(得分:1)
基本验证应仅在映射类中完成。
您可以参考以下示例:
假设您的映射类和请求方法如下:
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.validation.constraints.Email;
public class User {
@NotNull(message = "Name cannot be null")
private String name;
@Size(min = 10, max = 200, message
= "About Me must be between 10 and 200 characters")
private String aboutMe;
@Min(value = 18, message = "Age should not be less than 18")
@Max(value = 150, message = "Age should not be greater than 150")
private int age;
@Email(message = "Email should be valid")
@NotNull
private String email;
// setters and getters
}
@PutMapping(path="/update")
public ResponseEntity<UserResponse> updateUser(@Valid @RequestBody User user) {
return userRepository.save(user);
}
答案 1 :(得分:0)
您可以按照建议的方式进行操作,但是我只传递要更新的整个对象:
@PutMapping(path="/update")
public @ResponseBody String updateUser(@RequestBody User user) {
userRepository.save(user);
return "Updated"; }
对于空检查字段和验证电子邮件,您可以有一个validateUserFields函数,该函数接受一个User对象并返回一个布尔值,因此您可以:
if(validateUserFields(user))
userRepository.save(user)