Parameter page bei Search Criteria automatisch ermitteln?

In einem API-Test mit ‚/api/search/product‘ lasse ich per Filter mir alle Produkte (die ein bestimmtes Merkmal haben) im Shop ausgeben. Da hier jedoch das Limit auf 500 begrenzt ist, arbeite ich zusätzlich mit dem Parameter ‚page‘.

Siehe dazu:

Diesen Parameter ‚page‘ kann ich händisch setzen, wenn ich natürlich im Vorfeld weis wie viele Produkte es im Shop betrifft. Wenn ich aber den Parameter ‚page‘ dynamisch setzen will/muss brauch ich eine Angabe über die Gesamtanzahl der Produkte. Über welchen API-Call kann ich denn das ermitteln?

Mach doch eine Loop über Pages bis keine Daten mehr im result sind (->total).

Oh man ich bin blind, die Antwort mit ‚total-count-mode‘ steht genau oben drüber …

Wenn man aber mit ‚page‘ und ‚limit‘ arbeiten möchte, braucht man dennoch die Gesamtanzahl. Klar würde ein Loop gehen bis nichts mehr kommt, aber unschöne Variante.

Ich musste hier die Lösung mit ‚total-count-mode‘ wieder zurücknehmen. In einem Test mit dem Parameter ‚total-count-mode‘ und den Werten 0, 1 und 2 werden dennoch immer nur 500 Einträge angezeigt. Das ist aber nicht das Ziel. Ziel war es, dass ALLE Einträge zurück geben werden sollen. Dann wird wohl der Weg über Loop laufen müssen :frowning:

Moin @R4M,

der Parameter total-count-mode verändert auch nicht den response an sich, sondern gibt nur ein paar mehr Informationen aus.
Warum ist eine Loop eine unschöne Variante? Das baue ich eigentlich immer so, wenn ich etwas abarbeiten will bis zum Ende :slight_smile:
Ich würde bei total-count-mode den Wert 2 setzen. Damit sparst du dir die leere Abfrage zum Schluss da der Wert nur zurückgibt, ob es noch eine nächste Seite gibt.

Grüße
Matthias

Ich versuche das immer irgendwie zu vermeiden. Ein Fehler und der Loop läuft unendlich. Mittels ‚page‘ und ‚limit‘ taste ich mich nun durch die Datensätze :slight_smile:

Moin,

wenn du es in einer mehr oder weniger kontrollierbaren loop bauen willst, kannst du einen initialen Abruf machen mit total-count-mode = 1 und dann eine for anstatt einer foreach.
Der Modus ist allerdings wie die Doku sagt recht rechenlastig. Sollte dann auch nur für den ersten Aufruf genutzt werden, dann hast du ja das limit was du loopen musst und somit eine Begrenzung.
Ich selber würde immer die foreach nehmen und die Abbruchbedingung halt sehr genau prüfen. Aber das ist denke ich Geschmackssache :slight_smile:

Grüße
Matthias

Im Moment arbeite ich mit ‚while‘ und lass das solange durchlaufen bis das Resulat keine Ergebnisse mehr liefert.

Ja while meinte ich auch. keine Ahnung wie ich auf foreach gekommen bin :smiley:

Die kannst du dann soweit ich die Doku verstehe mit dem Modus 2 durchlaufen lassen und dann hast du eine Abbruchbedingung ohne, dass du unbedingt auf Ergebnisse prüfen müsstest.