Begrensninger
Ratelimiter
API-et implementerer en ratelimiter for å forhindre overbelastning. Denne funksjonen opererer basert på tre nøkkelparametere: Tidsvindu-størrelse, antall kall, og timeout.
Tidsvindu
Tidsvinduet angir varigheten mellom hver tilbakestillingsperiode for tellingen av antall kall til API-et.
- Standardverdi: 1000 millisekunder
Antall Kall
Dette er det tillatte antallet kall i hvert tidsvindu fra en enkelt klient.
- Standardverdi: 40 kall per tidsvindu
Timeout
Timeout-parameteren definerer hvor lenge en forespørsel kan stå i kø og vente på et ledig tidsvindu før den avvises med en 429 - Too Many Requests-feil.
- Standardverdi: 1000 millisekunder (tilsvarende ett tidsvindu)
Ytelsesberegning
Med de standardverdiene som er satt, tillater ratelimiteren et gjennomsnitt på 40 kall per sekund.
Justering av Parametere
For å forhindre overbelastning i perioder med høy last, kan disse verdiene justeres. Dette gir API-et fleksibilitet til å håndtere varierende lastnivåer.
Paginering
Spørringer mot NVDB API kan returnere et stort antall objekter. For å begrense belastningen på APIet og for å unngå store responsvolumer, anbefales det at brukere benytter paginering for å laste ned store resultatsett.
Parametere for Paginering
Paginering styres ved hjelp av to parametere:
- antall: Angir antall objekter som skal returneres i hver forespørsel.
- start: En markør som angir startpunktet for objektene som skal returneres.
Øvre Grense for antall
Den øvre grensen for antall
varierer basert på responsstørrelsen og kan variere fra endepunkt til endepunkt. Dersom en forespørsel angir et antall
som overskrider maksimumsgrensen, vil maksimumsverdien automatisk bli benyttet.
Bruk av start
-markør
start
-markøren produseres automatisk av APIet og kan ikke utledes av brukeren. Denne markøren styrer hvilke objekter som blir returnert i den påfølgende siden av responsen.
Metadata-Konvolutt
Responsen på spørringer vil inkludere en metadata-konvolutt som inneholder viktig informasjon:
- Antall objekter hentet og totalt antall objekter.
- Gjeldende sidestørrelse.
start
-markør og URL for neste side av resultatsettet.
Håndtering av fullført Paginering
Når alle objekter i et resultatsett er returnert, vil responsen inneholde samme start
-markør sammen med en tom side.
Eksempel
{
"objekter": [
...
],
"metadata": {
"antall": 205195,
"neste": {
"href": "https://nvdbapiles.atlas.vegvesen.no/vegobjekter/api/v4/vegobjekter/5?start=1",
"start": "2"
},
"returnert": 1000,
"sidestørrelse": 1000
}
}