0

Monatliche API Calls Budget

Hallo ihr Lieben,

ich arbeite neuerdings mit API Calls um Daten direkt nach Nino zu übertragen. Ich würde sagen, wenn ich 100 API Abfragen an einem Tag aus Ninox heraus starte, wäre das richtig viel. In meinem Usage overview lande ich aber regelmäßig über den monatlich verfügbaren 30.000 Abrufen.

Bisher konnte ich noch nicht feststellen, dass das Überschreiten dieser 30.000 verfügbaren Aufrufe irgendwelche Auswirkungen hat. Da ich da aber gerade ein relativ wichtiges System drauf aufbaue, habe ich Angst, dass Ninox irgendwann bei Überschreitungen dicht macht und ich keine Daten mehr Abrufen kann. 

Daher die Frage: Ist das bei euch auch so? Hat jemand eine Idee warum das so ist? Bin ich auf der ganz falschen Fährte und es hat gar nichts miteinander zu tun? 

Ich freue mich auf eure Antworten. 

5 Antworten

null
    • Gotje_Ing
    • vor 4 Monaten
    • Gemeldet - anzeigen

    Bist du in der public oder private cloud?

      • Paul_J_Herberhold
      • vor 4 Monaten
      • Gemeldet - anzeigen

      Hallo, ich bin in der Public Cloud

      • Gotje_Ing
      • vor 4 Monaten
      • Gemeldet - anzeigen

       
      Dann ist die nächste Frage, wie genau sehen die Abfragen aus. 
      Gibt es for-Schleifen in oder rund um den API-call?
      Triggern die Abfragen auf der anderen Seite etwas, das wiederum als einzelne API-calls zurück kommt?

      • Paul_J_Herberhold
      • vor 4 Monaten
      • Gemeldet - anzeigen

       Eigentlich habe ich das schon versucht bestmöglich zu optimieren. Ich habe zb ein Produkt, das aus 100 Variationen besteht, die wiederum sind in 5 Gruppen unterteilt. Meine erste API-Abfrage bestand tatsächlich darin, für alle 100 Variationen eine Abfrage zu starten. Was alleine schon wegen der Ladezeiten nicht smart war. Ich bin dann drauf gekommen, dass ich auch nur die 5 Gruppen abfragen kann und in der API-Antwort für eine einzelne Gruppen alle Infos der zu der Gruppe gehörenden Variationen finde. In dem Beispiel habe ich also die API-Anfragen von 100 auf 5 reduziert. Anbei der Code, vielleicht enthält er ja doch einen offensichtlichen Fehler. ansonsten verstehe ich nicht, wie es zu den 30.000 API-Anfrage kommt. Ich habe noch ein paar andere Anfragen, aber die bestehen nur aus Dingen wie "API-Token abrufen" ohne aufwändige If-Schleifen und werden auch nur per Button getriggert. 

      let Produkt := this;
      let gewuenschteVariationen := 'gewünschte Variationen';
      let titel := "API-Abfrage starten";
      let nachricht := "Es wurden " + cnt(gewuenschteVariationen) +
          " gewünschte Produktvariationen gefunden. Soll für diese Variationen eine Abfrage gestartet werden?";
      let antwortOptionen := ["Ja", "Nein"];
      let auswahl := dialog(titel, nachricht, antwortOptionen);
      if auswahl = "Ja" then
          let neueDatensaetze := 0;
          for datensatz in gewuenschteVariationen do
              let variationsID := datensatz.'Variations-ID';
              let geringsteAuflage := datensatz.'Geringste Auflage';
              let hoechsteAuflage := datensatz.'Höchste Auflage';
              let response := do as server
                      http("GET", "https..." + variationsID, {
                          Authorization: "Bearer " + 'API-Token'
                      }, null)
                  end;
              if response.error then
                  alert("Fehler bei der Abfrage für ID: " + variationsID + " - " + text(response.error))
              else
                  let daten := response.result;
                  let quantitiesList := daten.quantities;
                  let attributesList := daten.attributes;
                  var first := true;
                  for item in quantitiesList do
                      if item.quantity >= geringsteAuflage and item.quantity <= hoechsteAuflage then
                          let existingRecord := (select Produktvariationen where 'Variations ID' = item.quantity_id and Produkte = Produkt);
                          if count(existingRecord) = 0 then
                              let newR := (create Produktvariationen);
                              newR.(Produkte := Produkt);
                              newR.('Variations ID' := item.quantity_id);
                              newR.(Auflage := item.quantity);
                              newR.('Lieferzeit Standard' := item.Standard_to);
                              newR.('Deadline Standard' := item.Standard_deadline);
                              newR.('Lieferzeit Express' := item.Express_to);
                              newR.('Deadline Express' := item.Express_deadline);
                              newR.('Lieferzeit Overnight' := item.Overnight_to);
                              newR.('Deadline Overnight' := item.Overnight_deadline);
                              newR.('Einkaufspreis Standard' := item.Standard_price);
                              newR.('Einkaufspreis Express' := item.Express_price);
                              newR.('Einkaufspreis Overnight' := item.Overnight_price);
                              if first then
                                  newR.('API-Abfrage' := true);
                                  first := false
                              end;
                              for attribute in attributesList do
                                  if attribute.attribute_name = "Format" then
                                      newR.(Format := attribute.attribute_value)
                                  end;
                                  if attribute.attribute_name = "Material" then
                                      newR.(Material := attribute.attribute_value)
                                  end;
                                  if attribute.attribute_name = "Farbigkeit" then
                                      newR.(Farbigkeit := attribute.attribute_value)
                                  end;
                                  if attribute.attribute_name = "Ausführung" then
                                      newR.('Ausführung' := attribute.attribute_value)
                                  end;
                                  if attribute.attribute_name = "Veredelung" then
                                      newR.(Veredelung := attribute.attribute_value)
                                  end
                              end;
                              newR.('Auflage (Alt)' := newR.Auflage);
                              newR.('Material (Alt)' := newR.Material);
                              newR.('Veredelung (Alt)' := newR.Veredelung);
                              newR.('Format (Alt)' := newR.Format);
                              newR.('Farbigkeit (Alt)' := newR.Farbigkeit);
                              newR.('Lieferzeit Standard (Alt)' := newR.'Lieferzeit Standard');
                              newR.('Deadline Standard (Alt)' := newR.'Deadline Standard');
                              newR.('Lieferzeit Express (Alt)' := newR.'Lieferzeit Express');
                              newR.('Deadline Express (Alt)' := newR.'Deadline Express');
                              newR.('Lieferzeit Overnight (Alt)' := newR.'Lieferzeit Overnight');
                              newR.('Deadline Overnight (Alt)' := newR.'Deadline Overnight');
                              newR.('Einkaufspreis Standard (Alt)' := newR.'Einkaufspreis Standard');
                              newR.('Einkaufspreis Express (Alt)' := newR.'Einkaufspreis Express');
                              newR.('Einkaufspreis Overnight (Alt)' := newR.'Einkaufspreis Overnight');
                              newR.('Ausführung (Alt)' := newR.'Ausführung');
                              neueDatensaetze := neueDatensaetze + 1
                          end
                      end
                  end
              end
          end;
          Produkt.('Letzte Abfrage' := today());
          alert("Es wurden " + neueDatensaetze + " neue Datensätze erstellt.")
      end
      • Gotje_Ing
      • vor 4 Monaten
      • Gemeldet - anzeigen

       Sieht auf den ersten Blick gut aus. 
      Ich denke, wenn sonst niemand eine Idee hat, bleibt nur die Anfrage beim Support.

Content aside

  • vor 4 MonatenZuletzt aktiv
  • 5Antworten
  • 47Ansichten
  • 2 Folge bereits