Versions Compared

Key

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

Der er p.t. ikke nogen begrænsning på antal kald en KITOS API klient kan foretage pr. dag.

Fremtidige begrænsninger

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

Når https://os2web.atlassian.net/browse/KITOSUDV-1049 er løst og https://os2web.atlassian.net/browse/KITOSUDV-1928 er released, så vil endpoints som returnerer lister af data, 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 V1 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

Særligt for OData queries

OData protokollen tillader som udgangspunkt at man undlader “top” (page size). Fra efteråret 2020 vil manglende “top” fejle for API brugere, og de vil skulle anvende paginering med maks “top” på 100.