Endpoint z przedziałem czasowym

0

Cześć, muszę zrobić endpoint do wyciągania danych z bazki ale tylko tych mieszczących się w podanym przedziale czasowym. Moja granulacja jest jako dzien/tydzien/miesiac/rok.
Czy dobrym pomyslem byloby zrobienie DTO takiego jak ten:

fromDay?: Date;
toDay?: Date;

itd.

czy można byłoby zrobić to w jakiś bardziej sensowny sposob? Jak byscie podeszli do takiego problemu? Z gory dzieki za pomoc!

2

A nie lepiej zapytać konsumentów tego API, jakie będzie dla nich najwygodniejsze?

0

Zwykle taki endpoint wyglądał tak: GET /some-endpoint?startDate=2020-01-01&endDate=2020-01-02&limit=1000&offset=0

Para limit-offset jest przydatna jak danych jest za dużo żeby zwrócić na raz. Zawsze przydaje się domyślnie ustawiona wartość limitu której nie można przekroczyć żeby ktoś nie zabił nam maszyny przypadkiem. No chyba że mamy streamowanie JSON, to co innego

0

Dlaczego ograniczenie po stronie backendu jest potrzebne (w postaci predefiniowanych dat)? Jeśli dane będą liczone live to nie ma sensu go ograniczać tylko jak @KamilAdam pisał, nałóż jakieś ograniczenia żeby nie zabili Ci serwera i wtedy endpoint:

  1. może być ponownie użyty w innych przypadkach
  2. jeśli trzeba dodać przycisk z przedziałem czasowym np. dla 3 dni, to wtedy wymagana jest tylko praca na froncie.
    Jeśli danych jest dużo musicie je wcześniej przemielić bo klient się nie doczeka wyniku to wtedy podział na jakiś zakres miałby sens (lub użytkownik może poprosić o wygenerowanie raportu i za 3h dostanie powiadomienie, że raport jest gotowy).

Jeśli te zakresy dat mogą być wyklikane przez użytkowników to pomyśl też o tym, że mają też inne strefy czasowe i jeśli mnie interesuje zdarzenie które się wydarzyło pomiędzy 7-10 lipca do dla innego klienta to będzie przedział 6-9 lipca

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