REAL API

Ja genau, setVariable() und getVariable() sollte der Ansatz sein. Wenn es ums zählen geht, könnte auch incCounter() eine Möglichkeit sein.

Wir schauen mal, dass wir in den nächsten Tagen mal ein paar mehr Beispiele ins Handbuch bekommen.


Beispiel:


host:

https://demodata.synesty.com/example-json-orders.json?counter=${incCounter('myCounterInUrl')}


parsingTemplate:

<#assign row = target.addRow()>
<#list json as j >
 <#assign row = target.addRow()>
 ${addColumns(row, j)}
</#list>

${nextUrl(initialUrl?replace("counter=1","") + "counter=" + incCounter('myCounterInUrl',1) )}



requestHeaders:

counter=${incCounter('myCounterInRequestHeader',1)}




Führt zu folgenden Requests:


[GET https://demodata.synesty.com/example-json-orders.json?counter=1


RequestHeaders:
{counter=1}


,GET https://demodata.synesty.com/example-json-orders.json?counter=2

RequestHeaders:
{counter=2}




Also wenn ich das zum Probieren genau so nachbaue erhalte ich folgende Meldung:


Ein Parameter mit falschem Datentyp wurde an eine Funktion übergeben. (Root Causes: ClassCastException: com.asolida.delivor.core.domain.CounterVariable cannot be cast to java.lang.Number)



Gibts du den Counter irgendwo in eine Funktion rein? Wenn ja probier mal:


countername.get()


bzw.


${countername.get()}


Die Counter Variable hat die gleichen Funktionen wie die Zählvariablen in Flows (Datentyp COUNTER). Der Unterschied ist, dass die incCounter() Funktion im APICall implizit einen eigenen Counter definiert, ohne dass du dafür eine Zählvariable im Flow brauchst.


Wir nehmen das auch mit in unsere Doku-Planung auf.

Guten Morgen,


das war es dann wohl Ich ging davon aus, dass ich die Zählvariable brauche, deswegen habe ich diese erstellt.

Jetzt scheint es zu funktionieren, zumindest mal wie im Beispiel.


Danke!

So, nun die hoffentlich letzte Frage, sorry dass ich so nerven muss.


Ich habe das nun auf meinen Fall umgebaut und kann damit tatsächlich 2 calls machen und bekomme entsprechend Ergebnisse zurück.

Nach dem 2ten Call hört das ganze auf, ich denke weil hier:

${nextUrl(initialUrl?replace("offset=1","") + "offset=" + incCounter('myCounterInUrl',1) )}

nur "offset=1" ersetzen. mit welchem Ausdruck baue ich denn hier die Funktion ein, dass "offset=1" aus der URL bei den nächsten Calls auch hochgezählt wird. Denn es müsste ja weiterzählen zu "offset=2"...etc wenn ich den Befehl zum ersetzen gebe. Das passiert aber nicht, egal wie ich den Counter da einbaue.


VG

Enrico


Bist du in der Step-Vorschau? Da werden maximal 2 Calls gemacht. Probier mal, ob bei einer echten Flow-Ausführung mehr passiert.

Ja, war ich - beim Ausführen macht er tatsächlich mehr. Und wie erhöhe ich nun die Zahl die er als nächstes machen muss. Wenn ich in den countern 30 eingeben, so dass er immer 30 hochzählt, dann bekomme ich wieder das problem dass er die Signatur nicht mehr nimmt.

Hmm also vielleicht ist der Counter nicht so das richtige Mittel der Wahl und setVariable() / getVariable() vielleicht besser.


Der Ansatz mit setVariable() wäre, dass du initial einen <#if> Check machst, ob es deine Variable "offset" schon gibt und wenn nicht beginnst du bei offset=0 (oder so).


Hier mal ein Beispiel, womit du in der URL, im RequestBody und im RequestHeader konsistent das offset setzen kannst.


host:

https://demodata.synesty.com/example-json-orders.json?offset=<#if getVariable('offset')! == "">0<#else>${getVariable('offset')}</#if>



body:


<#assign row = target.addRow()>
<#list json as j >
 <#assign row = target.addRow()>
 ${addColumns(row, j)}
</#list>


${setVariable("offset", (callcounter + 1) * 30 )}
${nextUrl(initialUrl?replace("offset=0","") + "offset=" + getVariable('offset') )}


requestHeader:


offset=<#if getVariable('offset')! == "">0<#else>${getVariable('offset')}</#if>




Ergebnis sind calls wie diese:


[GET https://demodata.synesty.com/example-json-orders.json?offset=0

RequestHeaders:
{offset=0}



GET https://demodata.synesty.com/example-json-orders.json?offset=30

RequestHeaders:
{offset=30}


Ergänzung (evtl. für andere, die es noch nicht wissen):

Die hier verwendeten Variablen wie z.B. callcounter sieht man bei Klick auf den Plus-Button im requestBody sowie