Endpoint z przedziałem czasowym

Endpoint z przedziałem czasowym
Escanor16
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 367
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:

Kopiuj
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!

Charles_Ray
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1909
2

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

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5549
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

OtoKamil
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 143
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.