ale*_*dev 3 java jackson microprofile quarkus quarkus-rest-client
我知道你可以实施 ObjectMapperCustomizer为 Quarkus REST 服务配置映射器。但是,Quarkus REST Client 的文档中并不清楚它是否会使用相同的(全局?)映射器。当外部服务与您自己的服务具有不同的 JSON 命名约定时,您如何处理这种情况?我找不到为 REST 客户端配置 ObjectMapper 的方法。我假设您可能可以使用 Jackson 注释来解决这个问题,但我正在寻找一种方法来仅通过配置 ObjectMapper 来实现。
所以,基本上,问题是:如何为一个特定的REST 客户端配置一个单独的ObjectMapper ?
我遇到了同样的问题。通过大量的反复试验,我发现了以下作品:
首先,定义一个实现 JAX-RS ContextResolver 的类:
public class ClientObjectMapper implements ContextResolver<ObjectMapper> {
@Override
public ObjectMapper getContext(Class<?> type) {
ObjectMapper om = new ObjectMapper();
om.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
om.setSerializationInclusion(JsonInclude.Include.NON_NULL);
om.setPropertyNamingStrategy(PropertyNamingStrategy.UPPER_CAMEL_CASE);
return om;
}
}
Run Code Online (Sandbox Code Playgroud)
然后在您的客户端界面上简单地添加 @RegisterProvider(ClientObjectMapper.class)
从我到目前为止所做的测试来看,这将有效地产生与使用 ClientBuilder 手动构建 HTTP 客户端相同的效果。