Проблема с реализацией PUT запроса в приложении

Подскажите пожалуйста, как реализовать PUT запрос для CRUD приложения?
Реализовал в приложении POST, GET, DELETE запросы, с PUT пока что затык.
Пример запроса:

http://localhost:8080/api/users/3

Сейчас PUT метод создает пользователя нового вместо его обновления по id и возвращает список пользователей. Пример кода ниже.

Сontroller:

@RestController
@RequestMapping("/api/users")
public class UserController {
    @Autowired
    private UserService userService;

    @PostMapping
    public ResponseEntity registration(@RequestBody UsersEntity user) {
        try {
            userService.registration(user);
            return ResponseEntity.ok("Пользователь успешно создан");

        } catch (UserAlreadyExistException e) {
            return ResponseEntity.badRequest().body(e.getMessage());
        }

            catch (Exception e) {
            return ResponseEntity.badRequest().body("Произошла ошибка");
        }

    }

    @GetMapping
    public ResponseEntity getUsers() {
        try {
            return ResponseEntity.ok(userService.getAll());
        } catch (Exception e) {
            return ResponseEntity.badRequest().body("Произошла ошибка");
        }
    }

    @GetMapping("/{id}")
    public ResponseEntity getOneUser(@PathVariable Long id) {
        try {
            return ResponseEntity.ok(userService.getOne(id));

        } catch (UserNotFoundException e) {
            return ResponseEntity.badRequest().body(e.getMessage());
        }

          catch (Exception e) {
            return ResponseEntity.badRequest().body("Произошла ошибка");
        }
    }

    @PutMapping("/{id}")
    public ResponseEntity updateUser(@PathVariable Long id, @RequestBody UsersEntity user) {
        try {
            userService.update(id, user);
            return ResponseEntity.ok(userService.getAll());

        } catch (Exception e) {
            return ResponseEntity.badRequest().body("Произошла ошибка");
        }
    }

    @DeleteMapping("/{id}")
    public ResponseEntity deleteUser(@PathVariable Long id) {
        try {
            return ResponseEntity.ok(userService.delete((id)));
        } catch (Exception e) {
            return ResponseEntity.badRequest().body("Произошла ошибка");
        }

    }
}

Service:

@Service
public class UserService {

    @Autowired
    private UserRepo userRepo;

    public UsersEntity registration(UsersEntity user) throws UserAlreadyExistException {
        if(userRepo.findByUsername(user.getUsername()) != null) {
            throw new UserAlreadyExistException("Пользователь с таким email адресом существует"); // проверка на пользователя в базе данных
        }

        return userRepo.save(user);
    }

    public Iterable <UsersEntity> getAll() {
        return userRepo.findAll();

    }

    public UsersEntity getOne(Long id) throws UserNotFoundException {
        UsersEntity user = userRepo.findById(id).get();
        if (user == null) {
            throw new UserNotFoundException("Пользователь не найден");
        }
        return user;
    }

    public UsersEntity update(Long id, UsersEntity user) {
        return userRepo.save(user);
    }

    public Long delete(Long id) {
        userRepo.deleteById(id); // функция удаляющая записи в репозитории deleteById
        return id;
    }


}

Ответы (0 шт):