Как написать метод пут с помощью @putmapping - PullRequest
0 голосов
/ 13 октября 2018

Я узнал о 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";
}

Теперь я хочу написать запрос пут, который может принять идентификатор пользователя, а затем обновить имяили по электронной почте.Кроме того, мне нужно проверить, что имя пользователя и адрес электронной почты не должны быть нулевыми, а также адрес электронной почты в правильном формате.

Как я могу построить свой метод, используя @putmapping для выполнения моей задачи.

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

Основные проверки должны выполняться только в классе отображения.

Ниже приведен пример:

Предположим, что ваш класс отображения и метод запроса будут такими:

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);
}
0 голосов
/ 13 октября 2018

Вы могли бы сделать это так, как вы предлагаете, но я бы просто передал весь объект для обновления:

@PutMapping(path="/update")
public @ResponseBody String updateUser(@RequestBody User user) {
    userRepository.save(user);
    return "Updated"; }

Что касается полей с нулевой проверкой и проверки электронной почты, у вас может быть функция validateUserFields.который принимает объект User и возвращает логическое значение, так что вы можете:

if(validateUserFields(user)) 
    userRepository.save(user)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...