3

我们正在尝试使用 spring-cloud@FeignClient从另一个微服务调用微服务的 HAL-JSON REST API。该服务使用 Spring Data Rest、Spring Boot 1.4 实现,默认启用 Hateoas。

在客户端使用专用 DTO,所有简单属性都被正确映射,但 HAL 特定_embedded集合被忽略。

主要取自这篇文章,我们使用经常提到的 实现了一个Decoder带有相应的自定义 Feign ,但这仍然不能解决我们的问题。ObjectMapperJackson2HalModule

您可以使用此示例项目重现该问题,其中更详细地描述了该问题。

我们感谢有关此问题的任何帮助或提示!提前致谢

4

2 回答 2

0

我知道我正在回答一个老问题,但根据我的经验,我必须添加 @EnableHyperMediaSupport到我的主要/任何配置类来解决这个问题。您可以尝试并验证它是否适合您。

于 2020-10-28T17:24:00.260 回答
0

我认为理解如何反序列化的关键是你CustomerResources嵌入关系的类。因此,您需要反序列Resources化它以便获取HalResourcesDeserializer它。

我让它以这种方式工作。

@Getter
@Setter
public class Customer extends Resources<Resource<Relation>> {

    public static enum Type {
        PERSON, INSTITUTION
    }

    private String displayName;

    private Integer rating;

    private Type type;

    public Collection<Resource<Relation>> getRelations() {
        return this.getContent();
    }
}

这看起来仍然有点奇怪,我不确定这是否是最好的解决方案。

于 2017-03-18T17:11:59.500 回答