我使用了下面的Spring启动验证:
分级:
implementation 'org.springframework.boot:spring-boot-starter-validation'
在请求中:
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import com.fasterxml.jackson.annotation.JsonInclude;
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class ApiTransactionRequest {
private String id;
@NotNull
private String transaction_id;
@NotNull
private String apiOperation;
@NotNull
...
在测试此案例时,我获得了以下信息:Spring应用程序显示此日志:
警告28840 --- [nio-8080-exec-1] .w.s.m.s.默认处理程序异常解析程序:已解决[org.springframework.web.bind.方法参数无效异常:验证公共组织.springframework.http.ResponseEntity中的参数[0]失败
Http响应( Spring Boot 验证响应消息)
{
"timestamp": "2022-12-05T09:58:55.011+00:00",
"status": 400,
"error": "Bad Request",
"path": "/transactions"
}
实际上,我希望获得自定义http响应,而不是spring Boot 验证消息,如下所示:
{
"date": "2022-12-05",
"status": 400.03,
"error": "Transaction id is invalid",
"message": "Transaction id is not null"
}
有什么帮助吗,谢谢
2条答案
按热度按时间jjhzyzn01#
你需要使用
@ControllerAdvice
并进行自定义异常处理。Spring应该抛出MethodArgumentNotValidException
或ConstraintViolationException
-这取决于你是否从控制器抛出异常。MyResponse
可能有消息s8vozzvw2#
如果您需要普通的API Jason请求,请改用
@Entity
:在你的控制器里你会看到这样的东西
你可以查一下here