我们正在尝试使用spring-cloud @FeignClient
从另一个微服务中调用微服务的HAL-JSON REST API。该服务使用Spring Data Rest,Spring Boot 1.4实现,默认情况下启用了Hateoas。
在客户端使用专用DTO,所有简单属性都已正确映射,但忽略了特定于HAL的_embedded
集合。
主要从this post开始,我们使用经常提到的Decoder
实现了一个自定义的Feign ObjectMapper
和相应的Jackson2HalModule
,但这仍然无法解决我们的问题。
您可以使用this sample project 重现该问题,其中会更详细地描述问题。
我们感谢您对此问题的任何帮助或提示!提前致谢
答案 0 :(得分:0)
我认为理解如何反序列化的关键是你的Customer
是嵌入关系的Resources
类。因此,您需要将其反序列化为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();
}
}
这看起来有点奇怪,我不确定这是否是最佳解决方案。
答案 1 :(得分:0)
我知道我正在回答一个老问题,但是根据我的经验,我必须在主/任何配置类中添加state2
才能解决此问题。您可以尝试一下并验证它是否适合您。