0

Ninox API mit pagination callen

Hallo Leute, 

ich möchte die Ninox Api von aussen aufrufen, und dabei bestimme Datensätze abholen. Soweit kann man das in der url mit filter query

.../tables/XC/records?filters={"Q3": true}

jetzt könnte es sein, dass die zurückgelieferten Daten zu viel sind, ich hatte was von 500 Einträgen max. gelesen.

Zu diesem Zweck gibt es wohl die Möglichkeit die Ergebnisse Seitenweise abzufragen. Dazu gibt es die Parameter

page=x
perPage=y

die man ebenfalls an die URL anhängt. Ich würde das jetzt grundsätzlich so verstehen, dass man die Seiten reihenweise abfragt, etwa, bei 540 Datensätzen so:

.../tables/XC/records?filters={"Q3": true}&page=1&perPage=200

dann

.../tables/XC/records?filters={"Q3": true}&page=2&perPage=200

dann

.../tables/XC/records?filters={"Q3": true}&page=3&perPage=200

page 3 würde dann nur 140 Einträge liefern.

Das Verhalten bei meinen Tests ist aber irgendwie anders, und ich habe es nicht verstanden. Wie wird das gemacht?

Danke

6 Antworten

null
    • T_Bartzsch
    • vor 5 Tagen
    • Gemeldet - anzeigen

    Ahoi! Du solltest eigentlich mit ... ?filters={"Q3": true}&perPage=1000&page=1 ... alle Datensätze auf einer Seite bekommen...

    Und denk dran, bei der Benutzung von "filters" sind die zurückgegebenen Werte im JSON alle mit der fieldId (zb. "Q3" statt "Auswahl") und - noch wichtiger - im root des JSON und nicht unter "fields": abgelegt... 

      • dusticelli
      • vor 5 Tagen
      • Gemeldet - anzeigen

       vielen Dank, demnach ist 500 nicht die Grenze?

      Aber meine Frage war eher genereller Natur, ich verstehe nicht so ganz, wie man vorgehen sollte, wenn man die Ergebnisse der Abfrage, paginiert einholen wollte.

      So wie in meinem Beispiel oben habe ich es ja versucht, aber es scheint so nicht zu gehen.

      Also 

      .../tables/XC/records?filters={"Q3": true}&page=2&perPage=200

      würde ja nach meinem Verständnis die ersten 200 Ergebnisse überspringen und die zweiten 200 dann zurückgeben.

      Ist so gedacht?

      thx

    • T_Bartzsch
    • vor 5 Tagen
    • Gemeldet - anzeigen

    Ja, als erstes gibst du die perPage-Anzahl an, und dann die Seite. Bei 200 perPage und "page=2" erhältst du dann Datensatz 201 - 400... 

    Die Anzahl und auch die Seitennummer kannst Du ja in Ninox auch aus Eingabefeldern oder for-Schleifen holen. Du machst dann mehrfache API Abfragen in einer Schleife...

      • dusticelli
      • vor 5 Tagen
      • Gemeldet - anzeigen

       also irgendwie verstehe ich die Logik nicht.

      Ich calle so

      ...tables/XC/records?filters={"Q3": true}&perPage=500

      und bekomme 152 Items

      dann frage ich in 100er Schritt ab
      /tables/XC/records?filters={"Q3": true}&page=1&perPage=100

      und bekomme 52 Items.

      Wieso? Sollte ich nicht 100 bekommen?
       

      • T_Bartzsch
      • vor 4 Tagen
      • Gemeldet - anzeigen

       Die erste Page ist dann scheinbar page=0 ... die hat die 100 Datensätze, page=1 dann nur noch 52. Ich habs gerade getestet...

      • dusticelli
      • vor 4 Tagen
      • Gemeldet - anzeigen

       ach ja klar! Haha, das hätte ich auch selber sehen sollen. Macht total Sinn, und ist ja - glaube ich - bei Arrays auch üblich so zu zählen. 

      Vielen Dank

Content aside

  • Status Answered
  • vor 4 TagenZuletzt aktiv
  • 6Antworten
  • 52Ansichten
  • 2 Folge bereits