Umgang mit den Antwortbeschränkungen der Datenexport-API
Die Datenexport-API führt keine Paginierung der Antworten durch. Sollte eine Anfrage
mehr Daten zurückgeben, als die API in einer einzelnen Antwort zulässt, schlägt die
Anfrage mit einer Fehlermeldung fehl, anstatt ein Teilergebnis zurückzugeben. Planen
Sie Ihre Integrationen so, dass Sie die Grenzwerte einhalten, indem Sie den Datumsbereich
eingrenzen, die Anzahl der Drucker pro Anfrage reduzieren oder beides tun.
Wo die Grenzen liegen
Für Abfragen, die einen Datumsbereich enthalten, gelten zwei Arten von Einschränkungen:
- Maximaler Datumsbereich
- Wenn der Zeitraum zwischen
startDateTimeundendDateTimesieben Tage überschreitet, gibt die API eine 400-Antwort mit dem FehlercodeERR_DATE_RANGE_EXCEEDEDzurück. Verringern Sie die Größe des angeforderten Zeitfensters und senden Sie die Anfrage erneut ab. - Maximale Antwortgröße
- Die maximal unterstützte Größe einer Antwortdatei beträgt 6 MB, was ausreichen sollte,
um die Daten von fast 10.000 Jobs zu speichern. Sollten die Daten, die einer Anfrage
entsprechen, die maximale Antwortgröße überschreiten, gibt die API eine 413-Antwort
mit dem Fehlercode
ERR_RESPONSE_LIMIT_EXCEEDEDzurück. Der Antworttext enthält einenmaxJobs-Wert, der die geltende Obergrenze angibt. Um das Problem zu beheben, grenzen Sie den Datumsbereich ein, fordern Sie weniger Drucker an oder tun Sie beides, und senden Sie die Anfrage erneut ab.
Planungsanträge, die innerhalb der Grenzen bleiben sollen
Um eine Integration zu entwickeln, die zuverlässig innerhalb der Antwortgrenzen bleibt, sollten Sie folgende Faktoren berücksichtigen:
- Auftragsvolumen pro Drucker. Ein Durchlaufdrucker mit hohem Durchsatz kann pro Stunde weitaus mehr Jobs verarbeiten als ein Einzelblattdrucker mit geringem Durchsatz. Wenn Sie beide in Ihrem Gerätepark kombinieren, bestimmen die Drucker mit hohem Druckvolumen, wie kurz Ihre Zeitfenster sein müssen.
- Anzahl der Drucker pro Anfrage. Jede Anfrage kann mehrere
printerId-Werte enthalten. Es ist zwar praktisch, mehrere Drucker in einer einzigen Anfrage zusammenzufassen, doch jeder zusätzliche Drucker erhöht die Antwortgröße und damit die Wahrscheinlichkeit, dass das Limit überschritten wird. - Tageszeit. Wenn Ihr Betrieb im Schichtbetrieb läuft, konzentrieren sich Jobs und Statusänderungen auf bestimmte Stunden. Ein 24-Stunden-Zeitraum kann sehr unterschiedliche Volumina ergeben, je nachdem, wann diese 24 Stunden beginnen und enden.
- Toleranz für Wiederholungsversuche. Sollte eine Anfrage mit dem Fehler
ERR_RESPONSE_LIMIT_EXCEEDEDfehlschlagen, muss Ihre Integration die Anfrage aufteilen und einen erneuten Versuch unternehmen. Die Gestaltung für kleinere Fenster im Vordergrund ist in der Regel weniger komplex als die Umsetzung einer dynamischen Aufteilung.
Empfohlene Muster
Die folgenden Muster eignen sich gut für gängige Integrationsszenarien:
- Nächtlicher Auszug für die Berichterstellung
- Führen Sie einmal täglich einen geplanten Job aus, der die Daten der letzten 24 Stunden abruft, und zwar jeweils für einen Drucker nach dem anderen. Dieses Muster lässt sich einfach umsetzen, bei Fehlern leicht wiederholen und sorgt dafür, dass jede Antwort kurz bleibt. Führen Sie die Antworten für die einzelnen Drucker in Ihrem nachfolgenden Prozess zusammen.
- Stündlicher Datenauszug für Kontrollanzeigen in nahezu Echtzeit
- Führen Sie einmal pro Stunde einen geplanten Job aus, der in einem einzigen Aufruf die Daten der vergangenen Stunde für alle Drucker abruft. Durch stündliche Zeitfenster bleibt der Umfang der Antworten selbst bei Druckereien mit hohem Druckaufkommen gering. Sollten Sie über einen großen Fuhrpark verfügen, bestellen Sie die Drucker bitte in Gruppen und nicht alle auf einmal.
- Nachträgliche Erfassung historischer Daten
- Um ein Data Warehouse mit historischen Daten zu befüllen, durchlaufen Sie den Zeitbereich
in Fenstern fester Größe (beispielsweise sechs Stunden pro Anfrage) und Ihre Drucker
in kleinen Gruppen. Bearbeiten Sie jeweils ein Fenster nach dem anderen und speichern
Sie die Ergebnisse, bevor Sie zum nächsten Fenster weitergehen. Sollte ein Fenster
den Fehler
ERR_RESPONSE_LIMIT_EXCEEDEDauslösen, teilen Sie dieses Fenster in zwei Hälften und wiederholen Sie den Versuch mit den beiden Hälften. - Aktueller Druckerstatus zur Überwachung
- Um den aktuellen Status jedes Druckers in Ihrem Bestand zu überwachen, ohne den Verlauf
abzurufen, rufen Sie den Befehl
/printer-statesmit dem ParametercurrentState=trueauf. Die Antwort enthält eine Zeile pro Druckwerk und ist unabhängig vom Datumsbereich, sodass eine einzige Abfrage die gesamte Flotte abdecken kann.
Behandlung von Fehlern aufgrund von Antwortbeschränkungen in Ihrer Integration
Wenn Sie eine 413-Antwort mit dem Fehlercode ERR_RESPONSE_LIMIT_EXCEEDED erhalten, führen Sie eine oder mehrere der folgenden Maßnahmen durch, bevor Sie die
Anfrage erneut versuchen:
- Verkürzen Sie das Zeitfenster. Das Fenster in zwei Hälften zu teilen, ist eine bewährte Strategie; sollte die halbierte Anfrage weiterhin fehlschlagen, teilen Sie sie erneut.
- Reduzieren Sie die Anzahl der
printerId-Werte in der Anfrage. Falls ein Drucker den Großteil des Druckvolumens ausmacht, bestellen Sie diesen Drucker bitte separat. - Sollte die Anfrage einen aktuellen Snapshot und keine Historie betreffen, verwenden
Sie bitte
currentState=truebei/printer-states, um datumsbereichsabhängige Datenmengen vollständig zu vermeiden.
Versuchen Sie nicht, dieselbe Anfrage erneut auszuführen, ohne die Parameter zu ändern. Die API gibt keine Teilergebnisse zurück, sodass ein unveränderter erneuter Versuch erneut fehlschlagen wird.