Java Внедрение или запрос зависимости параметра REST RestController - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь ввести зависимость или хотя бы отфильтровать параметр ID, который поступает в RestControler весной. Я очень новый весной. Как я могу быть уверен, что параметр, передаваемый в API, действителен и / или как я могу внедрить его зависимость, связанную с сущностью клиента?

Это мой метод покоя контроллера CustomerController

@PatchMapping("/{id}")
    public Customer updateCustomer(@PathVariable Long id, @RequestBody Customer customer) {
        return customerService.updateCustomer(id, customer);
    }

Это запрос, который на данный момент фильтрует только имя и фамилию

package com.appsdeveloperblock.app.ws.requests.customer;
import javax.validation.constraints.NotNull;

public class CreateCustomerRequest {


    @NotNull
    private String firstname;

    @NotNull
    private String lastname;

    public String getFirstname() {
        return firstname;
    }

    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }

    public String getLastname() {
        return lastname;
    }

    public void setLastname(String lastname) {
        this.lastname = lastname;
    }


}

Спасибо!

1 Ответ

1 голос
/ 19 марта 2020

Вам нужен API Bean Validation (который у вас, вероятно, уже есть) и его эталонная реализация (например, hibernate-validator). Проверьте здесь Java Основы проверки бинов

Обобщение

  1. Добавьте соответствующие зависимости к вашему pom. xml (или gradle) ):
<dependencies>
  <dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
  </dependency>

  <dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.1.2.Final</version>
  </dependency>

  <dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator-annotation-processor</artifactId>
    <version>6.1.2.Final</version>
  </dependency>
</dependencies>
Используйте аннотацию @Valid для вашей сущности Customer, чтобы автоматически проверить полезную нагрузку:
@PatchMapping("/{id}")
public Customer updateCustomer(@PathVariable Long id, @RequestBody @Valid Customer customer) {
  return customerService.updateCustomer(id, customer);
}
Вы можете украсить поля вашего класса Customer или CreateCustomerRequest дополнительными аннотациями, например, @Size, @Max, @Email и c. Обратитесь к руководству для получения дополнительной информации.
...