Java RestController REST参数依赖注入或请求
Java RestController REST parameter dependency injection or request
我正在尝试注入依赖项或至少过滤进入 Spring 中 RestControler 的 ID 参数。我是 Spring 的新手。我如何确定 API 中传递的参数是有效的 and/or 我如何注入其与客户实体相关的依赖项?
这是我的休息控制器 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
总结
- 将相应的依赖项添加到您的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);
}
- 您可以使用更多注释来修饰
Customer
或 CreateCustomerRequest
class 的字段,例如@Size
、@Max
、@Email
等。查看教程了解更多信息。
我正在尝试注入依赖项或至少过滤进入 Spring 中 RestControler 的 ID 参数。我是 Spring 的新手。我如何确定 API 中传递的参数是有效的 and/or 我如何注入其与客户实体相关的依赖项?
这是我的休息控制器 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
总结
- 将相应的依赖项添加到您的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);
}
- 您可以使用更多注释来修饰
Customer
或CreateCustomerRequest
class 的字段,例如@Size
、@Max
、@Email
等。查看教程了解更多信息。