RESTEazy 和 @Valid 错误的文本答案而不是 JSON

问题描述 投票:0回答:1

我在我的项目中使用 EJB 和 RESTEazy。我有以下方法:

boolean save(@Valid Data data);

作为回应,我得到状态 400 和正文:

[PARAMETER]
[save.arg0.xyz]
[xyz must be 13 characters length and contains only letters and digits]
[AASSVV1234]

为什么我收不到 JSON?

我的终点:

@POST
@Path("save")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
public Response save( ....

当一切正常时,我会收到 200 响应和正文中的 JSON。 我已经定义了 ExceptionMapper 并已注册。

java json validation jax-rs resteasy
1个回答
0
投票

文档确实说明了输出的格式。很难知道在所有情况下所请求的格式应该是什么。也就是说,这似乎是一个合理的请求,至少要做一些基本的解析并发送一些已知内容类型(如 JSON)的格式化数据。

对于

application/xml

,响应中将返回XML,JSON似乎也合理。我已为此提交了 
RESTEASY-3426 作为 RFE。

在客户端可以选择使用

ViolationReport

。比如:

try ( Client client = ClientBuilder.newClient(); Response response = client.target(uri).request().get() ) { if (Boolean.parseBoolean(response.getStringHeaders().getFirst(Validation.VALIDATION_HEADER))) { String s = response.readEntity(String.class); ViolationReport report = new ViolationReport(s); // Handle my report } else { // valid response } }
    
© www.soinside.com 2019 - 2024. All rights reserved.