我在我的项目中使用 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 并已注册。
文档确实说明了输出的格式。很难知道在所有情况下所请求的格式应该是什么。也就是说,这似乎是一个合理的请求,至少要做一些基本的解析并发送一些已知内容类型(如 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
}
}