[英]Bad request in RestController spring boot 2.7
我检查了几种不同的方法来检查错误在哪里,但我仍然不知道答案。
那是我的 RestController
@RestController
public class CustomerController {
@PostMapping(value = "/customer")
public ResponseEntity<CustomerResponse> addCustomer(@RequestBody @Valid Customer custRequest) throws Exception {
ModelMapper modelMapper = new ModelMapper();
CustomerDto customerDto = modelMapper.map(custRequest, CustomerDto.class);
CustomerDto addCust = customer.addCustomer(customerDto);
CustomerResponse custResponse = modelMapper.map(addCust, CustomerResponse.class);
return new ResponseEntity<CustomerResponse>(custResponse, HttpStatus.CREATED);
}
}
那是我的 Model
@Entity
@Table(name = "customers")
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String idCustomer;
private String email;
@OneToMany(mappedBy = "customer",cascade = CascadeType.ALL,fetch = FetchType.EAGER)
private List<Choice> choices;
// Getter and setter and constructor
}
maven 依赖项
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
我该如何解决这个问题才能发布新客户。
@Valid 让框架检查方法调用的参数,如果验证失败,将抛出 HTTP 400 Bad Request 状态。 您有一个复杂的类型,该类型也需要验证。 这是一个链接: https://medium.com/javarevisited/are-you-using-valid-and-validated-annotations-wrong-b4a35ac1bca4
尝试删除 @Valid 以查看差异,上面的文章为您提供了一个示例实现。
此外,使用实体作为请求 object 是一种非常不鼓励的范例。 我们鼓励您首先根据您的要求制作 DTO object。 有些情况你必须继承,但这个问题的scope不是那个。
Customer
的验证似乎失败了。 我会
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.