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.
5Antworten
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.