/ / Jak użyć obiektu @FeignClient do odwzorowania kolekcji HAL JSON _embedded - spring-data-rest, spring-hateoas, spring-cloud-netflix, feign, hal-json

Jak korzystać z @FeignClient do mapowania kolekcji HAL JSON _embedded - spring-data-rest, spring-hateoas, spring-cloud-netflix, feign, hal-json

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 № 1

Myś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.