Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Volumen

Der er p.t. ikke nogen begrænsning på antal kald en KITOS API klient kan foretage pr. dag. Det anbefales dog at man placerer periodiske dataudtræk af større karakter udenfor “peak hours” (8-16), da der i denne periode typisk vil være en større mængde aktive UI brugere, som benytter samme delte infrastruktur.

Fremtidige begrænsninger

Begrænsninger i de enkelte kald

Påkrævet pagination med øvre accepteret page size

Når https://os2web.atlassian.net/browse/KITOSUDV-10492137 er løstreleased, så vil endpoints som returnerer lister af data på API V1, kræve at man anvender “pagination” med en maksimal “page size” på 100. Som integrator skal altså skrive sin data-import/eksport kode på en sådan form at den henter data ud i “flere klumper” i stedet for en enkelt. Algoritmen til fuld data eksport er kort beskrevet i følgende pseudokode:

Code Block
/*
  "myItemIntegrationService" er en antaget integrationsservice, som udstiller en GetPage funktion
  der kalder KITOS API over HTTP og returnerer data på POCO form dvs. en liste af MyItem objekter.
  
  OBS: For ODATA og de flesteV1 KITOS REST API'er benyttes terminologien "skip" og 
  "take(traditionel REST)/top(ODATA) parametre i stedet for pageNumber og pageSize, men denne
  kompleksitet forventes håndteret i "myItemIntegrationService"
*/
var exportedItems = new List<MyItem>()
var pageNumber = 0
const maxPageSize = 100
let currentPageItems = new List<MyItem>()

REPEAT
  //Indlæs datasæt
  currentPageItems = myItemIntegrationService.GetPage(pageNumber, maxPageSize)
  pageNumber = pageNumber + 1;
  exportedItems.AddRange(exportedItems);

//Hvis mindre data returneres end maxPageSize, så er der ikke mere data
UNTIL currentPageItems.Count < maxPageSize

Årsagen hertil er at KITOS kører på en begrænset infrastruktur, og at enkelte API kald ikke må optage for meget tid/plads på webserveren ift. de andre klienter herunder UI brugere.

Begrænsningerne slår igennem på alle kald til OData APIet såvel som de fleste traditionelle REST API endpoints hvor datamængder af - potentielt - større karakter kan hentes ned .(det fremgår af Swagger dokumentation hvis endpointet understøtter/kræver paginering)

Eksempler på URLer der anvender paginering:

API V1

OData: https://staging.kitos.dk/odata/Organizations(1)/ItSystemUsages?format=json&top=100&skip=100&orderby=ItSystem.Name&count=true

Alm. REST: https://staging.kitos.dk/api/ItSystemUsage?skip=100&take=100

API V2

https://kitos.dk/api/v2/it-systems?page=1&pageSize=100

Bemærk: I API V2 skelnes der mellem begrænset paginering (max page size på 100) og ubegrænset. For endpoints med ubegrænset paginering vil hele resultatsættet kunne hentes i et enkelt request ved at undlade pagineringsparametre. Hvilke regler der gælder for det enkelte endpoint, fremgår af Swagger dokumentation

Særligt for OData queries

...