Java RestController REST参数依赖项注入或请求

时间:2020-03-18 21:38:56

标签: java spring-boot spring-restcontroller

我正在尝试注入一个依赖项,或者至少过滤掉Spring中进入RestControler的ID参数。我在春天很新。如何确定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 个答案:

答案 0 :(得分:1)

您需要Bean验证API(您可能已经拥有)及其参考实现(例如hibernate-validator)。在这里Java Bean Validation Basics

总结

  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>
  1. 在您的@Valid实体上使用Customer批注以自动验证有效载荷:
@PatchMapping("/{id}")
public Customer updateCustomer(@PathVariable Long id, @RequestBody @Valid Customer customer) {
  return customerService.updateCustomer(id, customer);
}
  1. 您可以使用进一步的注释来修饰CustomerCreateCustomerRequest类的字段,例如@Size@Max@Email等。请查看教程以了解更多信息。