Het kan voorkomen dat een externe bron de gewenste data niet in één keer aan kan leveren, omdat er wellicht (i.k.v. performance en hoeveelheid data) een beperking zit van bijvoorbeeld 1000 resultaten per keer.
In zo’n geval heeft de externe bron meestal de mogelijkheid om in de aanroep (URL) te specificeren dat je een specifiek segment/pagina wilt ophalen van de data. U-Turn ondersteunt de mogelijkheid om dit bij een bron op te geven.
Voorbeeld 1 : Indicatie van meer data in de header van de response van de externe bron
Stel we hebben een externe bron die in de url parameters ondersteunt voor pagina & aantallen per pagina. En via een statuscode 206 (= Partial Content) aangeeft dat er nog meer data beschikbaar is. In zo’n situatie wil je de externe bron net zo lang aan blijven roepen totdat alle data opgehaald is.
Voor dit voorbeeld gebruiken we :
de URL → https://www.mooqe.it/dummy-api/incidents?page_number=<hier page number>&page_size=<hier page size>
page number → 1e pagina is 0
pagesize → 1000
Welke stappen dien je in deze situatie te ondernemen:
Ga naar het bewerk scherm van de betreffende bron
Bewerk het veld 'Url'
page_size = 1000 if 'page_number' not in locals(): page_number = 0 'https://www.mooqe.it/dummy-api/incidents?page_number={page_number}&page_size={page_size}'.format(page_number = page_number, page_size = page_size)
Bewerk het veld ‘Loop partial result’
if FlowComponent.StatusCode == 206: page_number += 1 finished = False else: finished = True finished
LET OP:
Zolang de formule uit het veld ‘Loop partial result’ een waarde False teruggeeft zal de Url van de bron aangeroepen blijven worden.
Wees dus extra alert om te voorkomen dat er een oneindige loop ontstaat!
Voorbeeld 2 : Resultaat van de bron bevat informatie van het totaal aantal resultaten
Stel we hebben een externe bron die in de url parameters ondersteunt voor pagina & aantallen per pagina.
Deze externe bron geeft in zijn response informatie over het totaal aantal resultaten dat aangeleverd kan worden. In zo’n situatie moet er dus beken gaan worden op basis van de huidige opgevraagde pagina en het het aantal resultaten per pagina of er nog extra aanroepen naar de bron gedaan moeten worden.
Voor dit voorbeeld gebruiken we :
de URL → https://www.mooqe.it/dummy-api/incidents?page_number=<hier page number>&page_size=<hier page size>
page number → 1e pagina is 0
pagesize → 1000
Welke stappen dien je in deze situatie te ondernemen:
Ga naar het bewerk scherm van de betreffende bron
Bewerk het veld 'Url'
page_size = 1000 if 'page_number' not in locals(): page_number = 0 'https://www.mooqe.it/dummy-api/incidents?page_number={page_number}&page_size={page_size}'.format(page_number = page_number, page_size = page_size)
Bewerk het veld ‘Loop partial result’
reeds_opgehaald_aantal_items = (start + 1) * page_size if int(FlowComponent.requestResult['total_items']) > reeds_opgehaald_aantal_items : finished = False page_number += 1 else: finished = True finished
LET OP:
Zolang de formule uit het veld ‘Loop partial result’ een waarde False teruggeeft zal de Url van de bron aangeroepen blijven worden.
Wees dus extra alert om te voorkomen dat er een oneindige loop ontstaat!
Voorbeeld 3 : Resultaat van de bron bevat de volledige link voor vervolg request
Stel we hebben een externe bron die in de url parameters ondersteunt voor aantallen per pagina.
Deze externe bron geeft in zijn response een URL terug die gebruikt moet worden voor het ophalen van de volgende batch aan informatie. Zolang deze URL in de response aangeleverd wordt zijn er nog additionele resultaten die opgehaald moeten worden.
Voor dit voorbeeld gebruiken we :
de URL → https://graph.microsoft.com/beta/groups?$select=id%2cdescription%2cdisplayName&$top=<hier page size>
pagesize → 100
Welke stappen dien je in deze situatie te ondernemen:
Ga naar het bewerk scherm van de betreffende bron
Bewerk het veld 'Url'
page_size = 100 if 'nextLink' not in locals(): nextLink = "https://graph.microsoft.com/beta/groups?$select=id,description,displayName&$top={page_size}".format(page_size = page_size) nextLink
Bewerk het veld ‘Loop partial result’
nextLink=FlowComponent.requestResult['@odata.nextLink'] if nextLink != None and nextLink!='' : finished = False else: finished = True finished
LET OP:
Zolang de formule uit het veld ‘Loop partial result’ een waarde False teruggeeft zal de Url van de bron aangeroepen blijven worden.
Wees dus extra alert om te voorkomen dat er een oneindige loop ontstaat!