Debounced søk blir ofte behandlet som en liten JavaScript-detalj. I praksis er det et samspill mellom brukergrensesnitt, API, database og serverbelastning.

Debounced søk og API
Debounced søk og API visualiserer hovedpoenget i artikkelen.

Minimumslengde og tomt søk

API-et bør vite hvordan det håndterer korte søk. Ett tegn, tomt søk og brede søk må ha bevisst oppførsel, ellers blir både brukeropplevelse og serverbelastning uforutsigbar.

Avbryt gamle forespørsler

Hvis brukeren skriver raskt, kan eldre forespørsler svare etter nyere. AbortController kan brukes til å avbryte forespørsler som ikke lenger er relevante.

API-et bør returnere nok kontekst

Et søkesvar bør inneholde søketermen det gjelder, antall treff og en tydelig liste. Da kan frontend kontrollere at svaret fortsatt hører til det brukeren faktisk har skrevet.

Rate limiting og cache

Søk kan bli tungt hvis mange brukere skriver raskt. API-et bør ha fornuftige grenser, og vanlige søk kan eventuelt caches. HTTP-status 429 kan brukes når klienten sender for mange forespørsler.

WEBoracle-vurdering

WEBoracle bør bruke samme mønster for søk i scripts, artikler og tutorials: minimumslengde, debounce, avbrutte forespørsler, tydelig JSON-svar og tilgjengelige statusmeldinger.

Konklusjon

Debounced søk er ikke bare en timer i frontend. Det er et produktmønster som må støttes av API-et. Når begge sider er designet sammen, får brukeren raskere søk og serveren mindre unødvendig arbeid.

Kilder og videre lesning

  1. MDN Web Docs: AbortController
  2. MDN Web Docs: Using the Fetch API
  3. MDN Web Docs: HTTP 429 Too Many Requests