我在我的 Quarkus 應用程式中實作了一個 REST 端點。出于驗證目的,我使用的是休眠驗證器。所以我在傳入引數中添加了@Valid 注釋,并為該類添加了一些約束。一切都按預期作業。
發送包含無效資料的請求時,我看到如下回應:
{
"exception": null,
"propertyViolations": [],
"classViolations": [],
"parameterViolations": [ {
"constraintType": "PARAMETER",
"path": "aaa.bbb.Id",
"message": "Id does not match the expected format.",
"value": "abc"
}],
"returnValueViolations": []
}
但我想有一個更緊湊的回應,也許會添加一些額外的資訊:
{
"additional-info": "some text",
"path": "aaa.bbb.Id",
"message": "Id does not match the expected format.",
}
我為 hibernate-validator 和 spring-boot 發現了相同的問題:當請求正文未通過使用 Bean Validation/Hibernate Validator 定義的驗證時,如何回傳自定義回應 pojo? 但我不知道如何使解決方案適應 Quarkus。
非常感謝。
uj5u.com熱心網友回復:
您需要提供ExceptionMapper<ValidationException>.
就像是:
@Provider
public class ResteasyReactiveViolationExceptionMapper implements ExceptionMapper<ValidationException> {
@Override
public Response toResponse(ValidationException exception) {
// convert the exception into a response
// see https://github.com/quarkusio/quarkus/blob/2.13.3.Final/extensions/hibernate-validator/runtime/src/main/java/io/quarkus/hibernate/validator/runtime/jaxrs/ResteasyReactiveViolationExceptionMapper.java#L32 for inspiration
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/521224.html
標籤:爪哇休眠夸库斯休眠验证器
