Powiedzmy, że w SPA (sklep internetowy, ehh) mam widok ze szczegółami produktu. Chciałbym pokazać w osobnym widoku recenzje klientów tego produktu (ważne jest, że nie mogę pokazać ich w widoku ze szczegółami produktu). Pytanie: czy w widoku z recenzjami musi być jakiś nagłówek w stylu Recenzje produktu: :nazwa
? Po kątem UX powinien być, tylko że to oznacza wykonanie drugiego zapytania do API po dane produktu (i trzeciego po powrocie do widoku ze szczegółami), bo te komponenty (szczegóły produktu, recenzje) nie mają wspólnego rodzica, w którym można by przechować współdzielone dane. Jak można uniknąć wykonywania tych dodatkowych zapytań do API bez używania menadżera stanu? Zakodować nazwę produktu w url?
- Rejestracja:prawie 7 lat
- Ostatnio:ponad 2 lata
- Lokalizacja:Gdańsk
- Postów:647

- Rejestracja:prawie 7 lat
- Ostatnio:ponad 3 lata
- Postów:3394
Nie rozumiem problemu. W czym ci ten globalny stan przeszkadza?
Pomijając już fakt, że SPA to zuo.
- Rejestracja:ponad 6 lat
- Ostatnio:około rok
- Postów:3561
Freja Draco napisał(a):
Pomijając już fakt, że SPA to zuo.
Rozwiniesz myśl? Zupełnie serio pytam

- Rejestracja:prawie 7 lat
- Ostatnio:ponad 3 lata
- Postów:3394
AnyKtokolwiek napisał(a):
Freja Draco napisał(a):
Pomijając już fakt, że SPA to zuo.
Rozwiniesz myśl? Zupełnie serio pytam
Była o tym dyskusja:
Czemu SPA (Single Page Application) to zło?
SPA ma tak wady jak i zalety. Zalety IMHO głównie z punktu widzenia serwera.
- Rejestracja:około 11 lat
- Ostatnio:około miesiąc
- Lokalizacja:Gdańsk
A czemu endpoint, który zwraca recenzje (zakładam na podstawie id produktu) nie może zawierać tych danych np.
GET /products/1/reviews
{
"productId": 1,
"productName": "iPhone 11 Pro",
"reviews": [
{}, {}, {}, ...
]
}
Wtedy masz tylko jeden strzał bez pytania kolejny raz o szczegóły.
- Rejestracja:prawie 7 lat
- Ostatnio:ponad 2 lata
- Lokalizacja:Gdańsk
- Postów:647
@lookacode1: Można, ale jakoś dziwnie mi to wygląda, bo endpoint sugeruje, że zostanie zwrócona lista recenzji. Czy może tak się faktycznie robi na co dzień?
- Rejestracja:około 11 lat
- Ostatnio:około miesiąc
- Lokalizacja:Gdańsk
nobody01 napisał(a):
@lookacode1: Można, ale jakoś dziwnie mi to wygląda, bo endpoint sugeruje, że zostanie zwrócona lista recenzji. Czy może tak się faktycznie robi na co dzień?
Tak się robi ewentualnie w każdej z recenzji możesz umieścić nazwę produktu, którego ona dotyczy np.
jakbyś potrzebował wyświetlać osobno każdą z recenzji.
- Rejestracja:prawie 7 lat
- Ostatnio:ponad 2 lata
- Lokalizacja:Gdańsk
- Postów:647
A co jeśli miałbym paginację, filtrowanie, wyszukiwanie? Wtedy przy każdym żądaniu czytane i pobierane byłyby niepotrzebne dane (produktu).
- Powinny wtedy być dwa endpointy?
/api/products/:id/views/with-reviews
(do pobrania danych produktu i pierwszej strony recenzji przy pierwszym żądaniu, a właściwie to drugim, bo już po przejściu do widoku z recenzjami) i/api/products/:id/reviews
(do paginacji, filtrowania, wyszukiwania). - Może jednak ten mój pomysł z pobraniem nazwy produktu z urla ma sens?
EDIT: Nieważne, za dużo kombinowania. Spróbuję zrobić to na jednym widoku przy jakimś *ngIf="view === 'reviews'"
.

- Rejestracja:ponad 21 lat
- Ostatnio:około 9 godzin
- Lokalizacja:Kraków
- Postów:1114
W pobieranie nazwy z urla nie chcesz iść, otwiera to potencjalna drogą do wstrzyknięcia czegoś, już nie wspominając zabaw z kodowaniem pomiędzy dozwolonym zestawem znaków w url a w aplikacji.
Co do tego czy robić jeden endpoint czy dwa, jeśli Ci ten mały overfetching przeszkadza (musisz żyłować wydajność) idź w dwa, jak nie, zostań przy jednym, jak to mówi stare przysłowie, kod którego udało się uniknąć napisania to najlepszy kod, bo jego utrzymanie mało kosztuje :D