Java 如何使用@putmapping编写put方法

Java 如何使用@putmapping编写put方法,java,spring,rest,spring-boot,Java,Spring,Rest,Spring Boot,我正在学习SpringRESTAPI,并编写了以下方法将数据保存到数据库中 @GetMapping(path="/add") // Map ONLY GET Requests public @ResponseBody String addNewUser (@RequestParam String name , @RequestParam String email) { // @ResponseBody means the returned String is the re

我正在学习SpringRESTAPI,并编写了以下方法将数据保存到数据库中

@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";
}
现在我想写一个put查询,它可以获取用户id,然后更新名称或电子邮件。此外,我需要检查用户名和电子邮件不应为空,并且电子邮件的格式有效


如何使用@putmapping构造方法来执行任务

您可以按照您的建议进行操作,但我只需传递整个要更新的对象:

@PutMapping(path="/update")
public @ResponseBody String updateUser(@RequestBody User user) {
    userRepository.save(user);
    return "Updated"; }
对于空检查字段和验证电子邮件,您可以使用validateUserFields函数,该函数接受用户对象并返回布尔值,以便:

if(validateUserFields(user)) 
    userRepository.save(user)

您可以按照您的建议进行操作,但我只需传递整个要更新的对象:

@PutMapping(path="/update")
public @ResponseBody String updateUser(@RequestBody User user) {
    userRepository.save(user);
    return "Updated"; }
对于空检查字段和验证电子邮件,您可以使用validateUserFields函数,该函数接受用户对象并返回布尔值,以便:

if(validateUserFields(user)) 
    userRepository.save(user)

基本验证只应在映射类中完成

您可以参考以下示例:

假设您的映射类和请求方法如下:

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);
}
import javax.validation.constraints.Max;
导入javax.validation.constraints.Min;
导入javax.validation.constraints.NotNull;
导入javax.validation.constraints.Size;
导入javax.validation.constraints.Email;
公共类用户{
@NotNull(message=“Name不能为null”)
私有字符串名称;
@尺寸(最小值=10,最大值=200,信息
=“关于我的信息必须介于10到200个字符之间”)
关于我的私人字符串;
@最小值(值=18,消息=“年龄不应小于18”)
@最大值(值=150,消息=“年龄不应大于150”)
私人互联网;
@电子邮件(message=“电子邮件应有效”)
@NotNull
私人字符串电子邮件;
//二传手和接球手
}
@PutMapping(path=“/update”)
public ResponseEntity updateUser(@Valid@RequestBody User){
返回userRepository.save(用户);
}

基本验证应仅在映射类中完成

您可以参考以下示例:

假设您的映射类和请求方法如下:

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);
}
import javax.validation.constraints.Max;
导入javax.validation.constraints.Min;
导入javax.validation.constraints.NotNull;
导入javax.validation.constraints.Size;
导入javax.validation.constraints.Email;
公共类用户{
@NotNull(message=“Name不能为null”)
私有字符串名称;
@尺寸(最小值=10,最大值=200,信息
=“关于我的信息必须介于10到200个字符之间”)
关于我的私人字符串;
@最小值(值=18,消息=“年龄不应小于18”)
@最大值(值=150,消息=“年龄不应大于150”)
私人互联网;
@电子邮件(message=“电子邮件应有效”)
@NotNull
私人字符串电子邮件;
//二传手和接球手
}
@PutMapping(path=“/update”)
public ResponseEntity updateUser(@Valid@RequestBody User){
返回userRepository.save(用户);
}

这方面会有很多文章,你试过用谷歌搜索吗?我试过了,但我不明白。好吧,我会再试一次。你真的应该深入学习一些广泛的教程。实际上,在代码片段中唯一正确的是方法的名称。首先,您可以使用POST而不是PUT来添加新用户。其次,您可以接收整个用户对象,而不是参数。第三,验证不是在控制器中完成的,而是在使用BeanValidation的实体上或在服务层中完成的。第四,你的问题不够具体,所以我将投票结束它。请不要泄气。学习构建Spring Restful应用程序不是一天就能完成的。“我想编写put查询”提示:
put
不是一个查询。这方面会有很多文章,你试过谷歌吗?我试过了,但我不明白。好吧,我会再试一次。你真的应该深入学习一些广泛的教程。实际上,在代码片段中唯一正确的是方法的名称。首先,您可以使用POST而不是PUT来添加新用户。其次,您可以接收整个用户对象,而不是参数。第三,验证不是在控制器中完成的,而是在使用BeanValidation的实体上或在服务层中完成的。第四,你的问题不够具体,所以我将投票结束它。请不要泄气。学习构建Spring Restful应用程序不是一天完成的。“我想编写put查询”提示:
put
不是查询。