Zwracanie różnego dto - RestAPI

0

Cześć, mam dwie klasy: rower i samochód, które dziedziczą po wspólnej klasie pojazd.
Oraz endpoint: GET /pojazd/{id}
I chciałbym zwrócić informacje szczegółowe o pojeździe oraz dodatkowe informacje o obiekcie rower/samochód.
Jak to najlepiej zrobić ? Czy dto powinno wówczas dziedziczyć po wspólnej klasie ?

1

Nie wiem jak w Springu, przy minimum "ręcznego" kodu javowskiego nie bałbym się tego,
Jak by się zserializował Samochód, byłyby pola również typowe dla samochodu

JEDNAK należy się zatroszczyć od stronę odczytująca te dane, tam jest problem do rozwiązania:
do jakiej klasy ma zdeserializowac tę informację.
Problem ma inny poziom przy kliencie w językach statycznych / dynamicznych. Problem nie jest nie do rozwiązania, ale istnieje.

1

Polimorficzny Json, to jest coś, od czego możesz zacząć. Przykład z wykorzystaniem Jacksona: https://stackoverflow.com/a/30386694.

0

Bez sensu :) wyobraź sobie, że jakiś klient zapina się na to API, a Ty chcesz zrobić refactoring swojego kodu domenowego i np. rozpiąć to dziedziczenie. Co wtedy ma zrobić biedny klient?

0

Ja bym to rozbił na dwa endpointy:
GET /pojazd/rower/{id}
GET /pojazd/samochod/{id}

IMO w tym kontekście jest to bardziej prawdiłowy zapis resta. Bo skoro istnieją dwa różne DTO tzn, że reprezentują dwie różne rezeprezentacje zasobów.
Ale jak już się uprzeć to w przypadku Javy I Jacksona jest to trywialne. Tutaj jest ładny przykład też dla rezprezentacji pojazdów https://octoperf.com/blog/2018/02/01/polymorphism-with-jackson/#type-mapping

Pomijam, że na frontendzie zabijałbym za takie api gdzie jeszcze musiałbym znać typy backendowe :v.

1 użytkowników online, w tym zalogowanych: 0, gości: 1