Próbujemy użyć chmury wiosennej @FeignClient
wywołać API HAL-JSON REST z mikroserwisu z innego serwisu mikro. Usługa jest realizowana za pomocą Spring Data Rest, Spring Boot 1.4, z włączoną Hateoas domyślnie.
Używając dedykowanego DTO po stronie klienta, wszystkie proste właściwości są poprawnie odwzorowane, ale są specyficzne dla HAL _embedded
kolekcja jest ignorowana.
W pierwszej kolejności ten post, wdrożyliśmy niestandardowe Feign Decoder
z odpowiadającym ObjectMapper
, używając często wspominanych Jackson2HalModule
, ale to nadal nie rozwiązuje naszego problemu.
Możesz odtworzyć problem za pomocą ten przykładowy projekt, gdzie problem jest opisany bardziej szczegółowo.
Doceniamy każdą pomoc lub wskazówki dotyczące tego problemu! Z góry dziękuję
Odpowiedzi:
0 dla odpowiedzi № 1Myślę, że kluczem do zrozumienia, jak deserializować to jest to, że twój Customer
jest Resources
klasa, która osadza relacje. Więc musisz deserializować go jako Resources
w celu HalResourcesDeserializer
podnieść go.
Mam to do roboty w ten sposób.
@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();
}
}
To wciąż wygląda trochę dziwnie i nie jestem pewien, czy to najlepsze rozwiązanie.