Spring Boot перед положением, публикацией и удалением проверки - PullRequest
0 голосов
/ 01 марта 2020

Я создал запрос Post, Put и Delete в моем контроллере при весенней загрузке. Я добавил валидации в мою модель, а также добавил параметр @Valid в метод на контроллере. Я хочу, чтобы еще что я должен был добавить для проверки для операций Post, Put и Delete?

public class Employee {
    @NotNull(message = "Employee Id can not be null")
    private Integer id;

    @Min(value = 2000, message = "Salary can not be less than 2000")
    @Max(value = 50000, message = "Salary can not be greater than 50000")
    private Integer salary;

    @NotNull(message = "designation can not be null")
    private String designation;
}

Мой метод публикации:

@PostMapping("/employees")
    public ResponseEntity<Void> addEmployee(@Valid @RequestBody Employee newEmployee) {
        Employee emp= service.addEmployee(newEmployee);
        if (emp== null) {
            return ResponseEntity.noContent().build();
        }
        return new ResponseEntity<Void>(HttpStatus.CREATED);
    }

Мой метод размещения:

@PutMapping("/employees/{id}")
    public ResponseEntity<Vehicle> updateEmployee(@Valid @RequestBody Employee updateEmployee) {
        Employee emp= service.EmployeeById(updateEmployee.getId());
        if (null == emp) {
            return new ResponseEntity<Employee>(HttpStatus.NOT_FOUND);
        }
        emp.setSalary(updateEmployee.getSalary());
        emp.setDesignation(updateEmployee.getDesignation());
        service.updateEmployee(emp);
        return new ResponseEntity<Employee>(emp, HttpStatus.OK);
    }

Метод удаления

    @DeleteMapping("/employees/{id}")
    public ResponseEntity<Employee> deleteEmployee(@Valid @PathVariable int id) {
        Employee emp = service.getEmployeeById(id);
        if (null == employee) {
            return new ResponseEntity<Employee>(HttpStatus.FOUND);
        }
        service.deleteEmployee(id);
        return new ResponseEntity<Employee>(HttpStatus.NO_CONTENT);
    }

Ответы [ 2 ]

0 голосов
/ 01 марта 2020

К вашему вопросу о PUT - обновление не работает должным образом? Хотя код выглядит нормально. Но если вы используете JPA, помните, что JPA имеет задержку записи данных в механизм базы данных, что означает, что он не записывает данные в базу данных сразу. И если вы хотите, чтобы JPA записывал / сохранял ваши данные сразу, вам придется вызвать respository.saveAndFlu sh () - чтобы заставить JPA записывать все данные в сеансе.

Итак, вместо вызова repository.saveAndFlu sh () каждый раз, когда вы сохраняете данные, вы можете просто вернуть один и тот же объект запроса в этом случае «updateEmployee» вместо «emp» для обновления записи, например:

return new ResponseEntity ( updateEmployee, HttpStatus.OK);

POST: Вы не должны использовать "@NotNull (message =" Идентификатор сотрудника не может быть пустым ")" на частный целочисленный идентификатор , так как вы используете тот же объект для обоих методов POST и PUT, потому что @Valid проверит все поля в классе.

0 голосов
/ 01 марта 2020

Какова ваша конкретная проблема c?

Пожалуйста, обратитесь к следующему источнику для дальнейшего чтения.

Проверка в Spring Boot

...