Java RestController REST参数依赖注入(inject)或请求

标签 java spring-boot spring-restcontroller

我正在尝试注入(inject)一个依赖项,或者至少过滤进入 Spring 中的 RestControler 的 ID 参数。 Spring 我很新。我如何确保 API 中传递的参数有效和/或如何注入(inject)与客户实体相关的依赖项?

这是我的休息 Controller 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;
    }


}

谢谢!

最佳答案

您需要 Bean Validation 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>
  • 在您的 Customer 实体上使用 @Valid 注释来自动验证负载:
  • @PatchMapping("/{id}")
    public Customer updateCustomer(@PathVariable Long id, @RequestBody @Valid Customer customer) {
      return customerService.updateCustomer(id, customer);
    }
    
  • 您可以使用更多注释来修饰 CustomerCreateCustomerRequest 类的字段,例如@Size@Max@Email 等。查看教程以获取更多信息。
  • 关于Java RestController REST参数依赖注入(inject)或请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60747846/

    相关文章:

    java - 使用 GraalPython 作为 Jython 替代品

    Java/Spring : Provide a common implementation java function (Supplier or Function. ..)

    spring-mvc - Spring @RestController 获取请求内容类型以响应 json 或 html

    java - Spring MVC RestController 不明确的 PathVariable 映射

    java - 为什么设置 JDialog 或 JFrame setVisible(true) 会切换我的 IME 设置?

    java - Java 中的括号位置;不确定安置

    java - 在 websphere 8.5.5.9 上初始化 Spring Boot

    java - 在 Spring Boot 中创建新的实体对象

    spring-boot - 为什么我在 Cloud Foundry 上的 Spring Boot 2 上的执行器/refresh 端点出现 403 Forbidden 错误{使用 Cloud Config Server 服务}

    java - 为什么RestController要公开CrudRepository中的所有操作?