gpt4 book ai didi

java - Jersey 客户端中的验证错误?

转载 作者:太空宇宙 更新时间:2023-11-04 14:34:37 25 4
gpt4 key购买 nike

我在从 Jersey 客户端的 Jersey 资源获取 ValidationErrors 时遇到问题。让我解释一下。

Jersey 资源中的函数:

@POST
@Produces({ MediaType.APPLICATION_JSON })
@Consumes(MediaType.APPLICATION_JSON)
public LoginInfo login(@NotNull @Valid Login login)

我的客户端配置:

ClientConfig clientConfig = new ClientConfig();
clientConfig.register(JacksonFeature.class);

我的 Jersey 客户:

ClientBuilder.newClient(getClientConfig())

我的函数调用:

getTarget("/login").request(MediaType.APPLICATION_JSON_TYPE).post(Entity.json(login), LoginInfo.class);

只要我提供有效的参数,一切都可以正常工作,例如,当我提供 null 作为参数时,我会遇到异常:

HTTP 400 Bad Request 

但我期待 ValidationError 响应,因为 Bean 验证失败。

Bean 验证和错误响应正在服务器上运行,例如使用简单的 html 测试,它显示了验证错误结构:

<div class="validation-errors"><div class="validation-error"><span class="message">may not be null</span> (<span class="path"><strong>path</strong> = LoginResource.login.arg0</span>, <span class="invalid-value"><strong>invalidValue</strong> = null</span>)</div></div>

如何在我的 Jersey 客户端中获取 ValidationError?我是否必须以特殊方式配置它,或者我应该使用过滤器?

[编辑]我打开了跟踪,当服务器上的验证失败时,服务器会发送验证错误,但泽西客户端似乎没有对其执行任何操作,而是将其转换为 BadRequestException。

6 < 400
6 < Content-Type: application/json
6 < Vary: Accept
[{"message":"may not be empty","messageTemplate":{org.hibernate.validator.constraints.NotBlank.message}","path":"RuleResource.add.arg0.description","invalidValue":""}]

最佳答案

回答我自己的问题;-)

泽西客户端似乎不支持验证错误,因此我创建了一个客户端过滤器,当状态为 400 时,我获取实体并将验证错误放入列表中。接下来,我创建一个包含验证错误的验证异常,然后将其抛出。在链的更上游,我得到一个处理异常,在堆栈跟踪中可以找到验证异常以及验证错误。因此,我从验证错误中创建了一条不错的消息,并抛出另一个异常,一直到我的 GUI 代码,该代码仅显示异常消息。

工作正常,感谢 jersey 过滤器的灵 active !

关于java - Jersey 客户端中的验证错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25743108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com