- Created by Ann-Sofie Hildebrandt, last modified on Apr 28, 2025
Denne side beskriver forskelle mellem Datafordelerens nuværende REST-tjenester og GraphQL-tjenesterne, samt hvordan du som anvender af REST-tjenester, kan komme i gang med at bruge GraphQL-tjenesterne.
Forfatter | Datafordeleren |
---|---|
Oprettet | Feb 27, 2025 |
Version | 1.0 |
Ændret | Apr 28, 2025 |
Sidehistorik |
Indhold i returdata
De nuværende REST-tjenester på Datafordeleren giver anvendere mulighed for at hente en delmængde af en entitets datapunkter givet en bestemt URL. Du kan læse mere om de nuværende REST-tjenester på datafordeler.dk.
GraphQL-tjenesterne giver anvendere mulighed for at specificere nøjagtig hvilke data de har brug for og derved udelade de overflødige data. Det er det samme data der udstilles ved de forskellige tjenester, men forskellen er at GraphQL-tjenesterne giver anvendere mulighed for at hente en delmængde af de data der udstilles ved REST-tjenester.
GraphQL-tjenesterne er derfor velegnede til at hente begrænsede datamængder uden efterfølgende at skulle processere og smide unødig data væk.
Det skal bemærkes at GraphQL-tjenester og REST-tjenester driftes parallelt i en periode, så anvendere af Datafordeleren har mulighed for at skifte fra REST-tjenester til GraphQL-tjenester.
Bemærk
De nuværende REST-tjenester understøtter joins mellem forskellige entiteter. Det gør de entitetsbaserede GraphQL-tjenester ikke. For at efterligne en af de nuværende REST-tjenester der sammenstiller 4 entiteter i ét kald, skal du, ved brug af GraphQL, lave fire kald – ét for hver entitet – for derefter selv at efterprocessere og sammenstille resultaterne.
Anvendereksempel på transition fra de nuværende REST-tjenester til GraphQL-tjenester
Dette eksempel tager udgangspunkt i en anvender som benytter entiteten BBR_Bygning i Frederiksberg kommune (kommunekode: “0147”) og derfor bruger REST-tjenester.
Situationsbeskrivelse
I dette eksempel laver anvenderen et kald til de nuværende REST-tjenester for at hente følgende oplysninger om alle bygninger i Frederiksberg Kommune:
- Husnummer
- byg007Bygningsnummer
- byg024AntalLejlighederMedKoekken
- byg025AntalLejlighederUdenKoekken
- byg030Vandforsyning
Anvenderen benytter følgende parametre (bemærk at registrerings- og virkningstidspunkt sættes til NOW() hvis ikke angivet):
- Kommunekode = 0147
- PageSize = 1000
- Page = 1
Anvenderen bruger en tjenestebruger med brugernavn og password til at tilgå REST-tjenesten på URL’en:
For at hente de resterende data øges page med én og tjenesten kaldes igen indtil alt data er hentet. Dette resulterer i data som indeholder alle informationer fra entiteten BBR_Bygning og skal derfor efterprocesseres for at fjerne overflødigt data.
Transition
Anvender tilgår følgende tjeneste med sin API-nøgle for at hente GraphQL-skemaet for BBR:
Da anvender nu ved hvilke queries der kan sendes for BBR, sender anvender nu en query til URL’en nedenfor for at hente de første 1.000 datapunkter fra BBR_Bygning for Frederiksberg Kommune med de ønskede oplysninger:
Anvender modtager nu de første 1000 datapunkter samt paging-information i json-format som vist nedenfor:
Anvender kan nu hente de resterende data ved iterativt at sende queries, med den resulterende endCursor-værdi fra det forrige svar, så længe det resulterende JSON-svar har hasNextPage=true.
Anvender er nu i besiddelse af alle datapunkter fra BBR_Bygning entiteten for Frederiksberg Kommune med de ønskede informationer. Data behøver ikke efterfølgende at blive efterprocesseret.