Skip to main content
StartseiteBlogAnleitungenFehlerbehandlung der Tracking-API: So verwalten Sie ungültige Sendungsnummern, Ratenbegrenzungen und Wiederholungsversuche

Fehlerbehandlung der Tracking-API: So verwalten Sie ungültige Sendungsnummern, Ratenbegrenzungen und Wiederholungsversuche

17TRACK

Behandeln Sie Fehler der Tracking-API, indem Sie ungültige Eingaben, vorübergehende Ausfälle, Ratenbegrenzungen und Ergebnisse zum Sendungsstatus voneinander trennen. Lehnen Sie ungültige Trackingnummern ab oder korrigieren Sie sie, anstatt sie unverändert erneut zu senden. Stimmen Sie bei einer Drosselung das Anfragevolumen ab und wiederholen Sie vorübergehende Fehler mit begrenztem exponentiellem Backoff und Jitter. Stellen Sie vor der Wiederholung einer Registrierung oder einer anderen Schreibanforderung fest, ob der erste Versuch erfolgreich war.

Fehlerbehandlung der Tracking-API: Umgang mit ungültigen Trackingnummern

Für Entwickler, die Trackingdaten mit einem Auftragsverwaltungssystem, einer Lagerplattform oder einer kundenorientierten Trackingseite verbinden, besteht das Ziel nicht einfach in weniger fehlgeschlagenen Anfragen. Es geht um eine zuverlässige Sendungstransparenz ohne doppelte Registrierungen, Retry-Stürme, irreführende Liefermeldungen oder unnötige Supportanfragen.

Klassifizieren Sie den Fehler, bevor Sie eine Reaktion auswählen

Eine Tracking-Integration muss mehrere getrennte Ergebnisse bewerten: ob die Netzwerkanfrage abgeschlossen wurde, ob die API die Operation akzeptiert hat, ob jedes angeforderte Trackingelement erfolgreich war und ob Sendungsereignisse verfügbar sind. Wenn alle vier Aspekte als ein einziges Erfolgs-oder-Fehlschlagskennzeichen behandelt werden, entstehen vermeidbare Fehler.

Eine erfolgreiche HTTP-Antwort bedeutet nicht zwangsläufig, dass jedes Element eines Stapels erfolgreich war. Umgekehrt ist eine erfolgreich verarbeitete Abfrage ohne Trackingereignisse nicht unbedingt ein API-Fehler. Prüfen Sie den Antworttext und wenden Sie die dokumentierte Bedeutung des Anbieters für jedes Ergebnis an.

BedingungEmpfohlene MaßnahmeUnverändert wiederholen?
Fehlerhafte Nummer oder ungültiges AnforderungsfeldEingabe validieren und korrigierenNein
Fehlende oder ungültige ZugangsdatenZugangsdaten, Berechtigungen und Umgebung prüfenErst nach der Korrektur
Antwort aufgrund einer RatenbegrenzungBetroffene Aufgaben verzögern und den gemeinsamen Anfragedruck reduzierenNach der erforderlichen Wartezeit, sofern sicher
Vorübergehender DienstausfallBegrenztes Backoff anwenden und die Sicherheit der Operation prüfenNormalerweise innerhalb eines Retry-Budgets
Timeout nach dem Absenden einer RegistrierungAbgleichen, ob die Registrierung vorhanden istNicht blind
Akzeptierte Abfrage ohne SendungsereignisseDen dokumentierten Tracking-Lebenszyklus befolgenGeplante Aktualisierung statt schneller Wiederholungen verwenden

HTTP-Statuscodes sind ein Ausgangspunkt, aber kein vollständiger anbieterspezifischer Entscheidungsbaum. RFC 9110 definiert die HTTP-Semantik, während RFC 6585 429 Too Many Requests definiert. Ihre Integration sollte außerdem dokumentierte Anwendungsfehlercodes und Ergebnisse auf Elementebene interpretieren.

Ungültige Trackingnummern: Ungültige Eingaben von fehlenden Ereignissen unterscheiden

„Ungültige Trackingnummer“ kann verschiedene Probleme bezeichnen: eine fehlerhafte Kennung, eine nicht unterstützte Kombination aus Frachtführer und Nummer, ein fehlendes erforderliches Frachtführerfeld oder einen anderen anbieterspezifischen Validierungsfehler. Gehen Sie nicht davon aus, dass eine Nummer ungültig ist, nur weil keine Trackingereignisse zurückgegeben werden.

Validieren, ohne die Kennung zu beschädigen

  • Trackingnummern als Zeichenfolgen speichern. Eine numerische Speicherung kann führende Nullen entfernen oder lange Kennungen verändern.
  • Die ursprüngliche Eingabe bewahren. Bewahren Sie einen separaten normalisierten Wert auf, damit Transformationen nachvollziehbar bleiben.
  • Vorsichtig normalisieren. Entfernen Sie gegebenenfalls umgebende Leerzeichen, aber interne Zeichen oder die Groß-/Kleinschreibung nur dann, wenn dies durch dokumentierte Regeln erlaubt ist.
  • Erforderliche Felder lokal prüfen. Erkennen Sie leere Nummern, fehlende Frachtführerkennungen und ungültige Anfrageformen, bevor Sie sie senden.
  • Eine universelle Trackingnummern-Regex vermeiden. Eine für einen Frachtführer entwickelte Regel kann gültige Kennungen eines anderen ablehnen.
  • Bestätigen, was das Feld enthält. Eine Bestellnummer, eine Lagerreferenz und eine Trackingnummer des Frachtführers sind nicht austauschbar, sofern der Endpunkt dies nicht ausdrücklich unterstützt.

Wenn die API die Eingabe ausdrücklich ablehnt, leiten Sie sie zur Korrektur weiter, statt eine automatische Wiederholungsschleife zu verwenden. Geben Sie einen aussagekräftigen Grund wie „Frachtführerkennung erforderlich“ an, anstatt jedes Validierungsproblem auf „Tracking fehlgeschlagen“ zu reduzieren.

„Keine Ereignisse“ als separaten Zustand behandeln

Eine Sendung kann bereits eine Trackingkennung besitzen, bevor nützliche Bewegungsereignisse verfügbar werden. Die richtige Reaktion hängt vom dokumentierten Statusmodell der API und vom Kontext der Sendung ab. Prüfen Sie, ob die Kennung aus dem Versandsystem stammt, ob die Auswahl des Frachtführers korrekt ist und ob die Antwort auf ausstehende Daten statt auf eine abgelehnte Eingabe hinweist.

Verwenden Sie unterschiedliche interne Zustände wie input_rejected, awaiting_events und temporarily_unavailable. Dies sind vorgeschlagene Anwendungszustände und keine standardisierten API-Werte. Sie helfen dabei, zu verhindern, dass eine vorübergehende Datenlücke zu einer ungenauen Kundenmitteilung wird.

Ratenbegrenzungen integrationsweit verwalten, nicht pro Worker

RFC 6585 definiert HTTP 429 als Antwort auf eine Ratenbegrenzung und erlaubt die Aufnahme eines Retry-After-Headers. Der Standard legt keine universelle zulässige Menge oder Zählmethode für Tracking-APIs fest. Begrenzungen können nach Konto, Zugangsdaten, Endpunkt oder einem anderen Geltungsbereich dokumentiert sein; verwenden Sie die tatsächlichen Regeln des Anbieters.

RFC 9110 legt zwei Formen für Retry-After fest: eine nicht negative Anzahl von Sekunden oder ein HTTP-Datum. Verarbeiten Sie beide. Wenn der Wert ein Datum ist, berechnen Sie die verbleibende Wartezeit sorgfältig und berücksichtigen Sie Uhrzeitunterschiede. Fehlt der Wert oder ist er unbrauchbar, wenden Sie Ihre konfigurierte Fallback-Backoff-Richtlinie an.

Wenn andere Worker weiterhin dasselbe Kontingent verwenden, reicht es nicht aus, dass ein Worker unabhängig wartet. Platzieren Sie die Ratensteuerung an der gemeinsamen Grenze für die betreffende Berechtigung oder das betreffende Konto. Ein zentraler Scheduler, ein gemeinsam genutzter Token-Bucket oder eine gleichwertige verteilte Steuerung kann diesen Datenverkehr koordinieren.

  1. Betroffenen Geltungsbereich ermitteln. Bestimmen Sie, für welchen Endpunkt, welche Zugangsdaten oder welches Konto die Begrenzung gilt.
  2. Die Warteanweisung des Servers beachten. Planen Sie keine frühere Wiederholung als durch einen gültigen Retry-After-Wert erlaubt.
  3. Betroffene eingereihte Aufgaben verzögern. Vermeiden Sie die Blockierung unabhängiger Datenströme, wenn die Begrenzungen tatsächlich unabhängig sind.
  4. Parallelität oder Anfragehäufigkeit reduzieren. Ein einmaliges Warten ohne Änderung des Anfrageverhaltens kann dasselbe Problem erneut verursachen.
  5. Mit Abständen fortfahren. Geben Sie nach Ablauf der Wartezeit nicht den gesamten Rückstand gleichzeitig frei.

Wo unterstützt, kann Stapelverarbeitung die Anzahl der Anfragen reduzieren, muss jedoch die dokumentierten Regeln zu Stapelgröße und Abrechnung einhalten. Gehen Sie nicht davon aus, dass ein Stapel eine Einheit des Kontingents verbraucht. Verwenden Sie ebenso Webhooks, sofern verfügbar, um vermeidbares Polling zu reduzieren, und behalten Sie gleichzeitig den für Ihre Integration erforderlichen Abgleichsprozess bei.

Begrenzte Wiederholungen mit Backoff und Jitter verwenden

Wiederholungen sind angemessen, wenn ein Fehler verschwinden kann, ohne die Anfrage zu ändern, und die Wiederholung der Operation sicher ist. Vorübergehende Verbindungsfehler und ausgewählte Serverfehler können in diese Kategorie fallen. Eine fehlerhafte Nutzlast, ungültige Zugangsdaten oder ein dauerhaftes Berechtigungsproblem erfordern im Allgemeinen stattdessen eine Korrektur.

Ein praktischer Fallback ist ein begrenztes exponentielles Backoff mit vollständigem Jitter:

backoff_window = min(max_delay, base_delay * 2^retry_index)
jitter_delay = random(0, backoff_window)
next_delay = max(valid_retry_after_delay, jitter_delay)

Hier beginnt retry_index bei der ersten Wiederholung mit null, und ein fehlendes Retry-After fügt keine zusätzliche Mindestwartezeit hinzu. Dies sind Implementierungsentscheidungen und kein vorgeschriebener HTTP-Algorithmus. Wählen Sie Basisverzögerung, Obergrenze, Versuchslimit und Gesamtablaufzeit passend zu Ihrer Arbeitslast und den Vorgaben des Anbieters.

Jitter verteilt Anfragen über die Zeit, statt dass jeder Worker sie nach demselben Zeitplan wiederholt. Die Verzögerungsobergrenze begrenzt die exponentielle Komponente; sie sollte keine längere, gültige vom Server angeforderte Wartezeit außer Kraft setzen. Wenn diese Wartezeit Ihre Auftragsfrist überschreitet, stellen Sie den Auftrag gemäß den Richtlinien zurück oder beenden Sie ihn, statt zu früh erneut zu versuchen.

Jeder Wiederholungskette ein Ende geben

  • Versuchslimit: Begrenzen Sie die Anzahl zusätzlicher Anfragen.
  • Abgelaufene Zeit: Beenden Sie die Wiederholung von Aufgaben, deren nützliches Verarbeitungsfenster überschritten wurde.
  • Eindeutige Zuständigkeit: Legen Sie fest, welche Schicht Wiederholungen steuert, damit Wiederholungen des HTTP-Clients und der Warteschlange nicht unerwartet vervielfacht werden.
  • Dauerhafte Planung: Speichern Sie verzögerte Aufgaben, statt sich in kurzlebigen Prozessen auf lange Wartezeiten zu verlassen.
  • Wiederherstellungspfad: Senden Sie ausgeschöpfte Aufgaben mit einem Grund und der nächsten Maßnahme in eine überprüfbare Warteschlange für fehlgeschlagene Aufgaben.

Ziehen Sie bei einem anhaltenden Ausfall einen Circuit Breaker in Betracht, der Routineaufrufe vorübergehend pausiert und kontrollierte Wiederherstellungsprüfungen zulässt. Dies ist ein Muster für die Ausfallsicherheit einer Anwendung und kein Beleg dafür, dass ein bestimmter Trackinganbieter dies erfordert.

Mehrdeutige Schreibvorgänge vor dem erneuten Senden klären

Ein Timeout zeigt, dass Ihre Anwendung keine vollständige Antwort erhalten hat. Es beweist nicht, dass der Server die Anfrage abgelehnt oder nie verarbeitet hat. Dieser Unterschied ist wichtig, wenn Trackingnummern registriert oder Trackingkonfigurationen geändert werden.

RFC 9110 erläutert idempotente Methoden und warnt davor, nicht idempotente Anfragen automatisch zu wiederholen, ohne eine Grundlage dafür zu haben, dass die Wiederholung sicher ist oder die ursprüngliche Operation nicht angewendet wurde. Bewerten Sie die dokumentierte Semantik der Operation, statt anzunehmen, dass sich jeder Tracking-Endpunkt wie eine schreibgeschützte Abfrage verhält.

  • Verwenden Sie, sofern verfügbar, einen vom Anbieter dokumentierten Idempotenzmechanismus und beachten Sie dessen Geltungs- und Aufbewahrungsregeln.
  • Verwenden Sie für Wiederholungen derselben logischen Operation denselben Idempotenzschlüssel; gehen Sie nicht davon aus, dass ein beliebiger benutzerdefinierter Header berücksichtigt wird.
  • Prüfen Sie, sofern unterstützt, die bestehende Registrierung, bevor Sie einen mehrdeutigen Schreibvorgang wiederholen.
  • Verwenden Sie eine lokale Eindeutigkeitsbeschränkung, die auf die dokumentierte Identität der Sendung beim Anbieter abgestimmt ist.
  • Speichern Sie das Ergebnis der Operation, damit eine erneute Zustellung aus der Warteschlange nicht automatisch einen weiteren Schreibvorgang auslöst.

Speichern Sie bei Stapeloperationen das Ergebnis jedes Elements. Wiederholen Sie nur Elemente, die als vorübergehend fehlgeschlagen klassifiziert wurden, und gleichen Sie Elemente ab, deren Ergebnis weiterhin unbekannt ist. Die erneute Verarbeitung des gesamten Stapels kann erfolgreiche Arbeit wiederholen und das Anfragekontingent unnötig verbrauchen.

Die Richtlinie auf Ihren Trackinganbieter anwenden

Verwenden Sie für eine 17TRACK-Integration die Tracking-API-Seite und die offizielle API-Dokumentation als Ausgangspunkte für den anbieterspezifischen Vertrag. Halten Sie Ihren Fehlerklassifizierer konfigurierbar, statt Annahmen aus einem allgemeinen HTTP-Leitfaden fest zu codieren.

Bestätigen Sie vor der Implementierung das Anfrageschema des relevanten Endpunkts, die Antwortstruktur, die Bedeutungen von Fehlern auf Elementebene, den Geltungsbereich der Ratenbegrenzung, Stapelbeschränkungen und die Regeln für doppelte Übermittlungen. Wenn Sie die Ereignisübermittlung verwenden, prüfen Sie außerdem Anforderungen an Bestätigung, Authentifizierung und erneute Zustellung. Dieser Leitfaden schreibt kein numerisches 17TRACK-Ratenlimit, keinen Wiederholungszeitplan und keine Idempotenzfunktion vor.

Halten Sie jede bestätigte Regel in einer Zuordnung von der Anbieterantwort zur Anwendungsaktion fest: Eingabe korrigieren, Konfiguration reparieren, warten, abgleichen oder eskalieren. Ein nicht erkannter Fehler sollte den Diagnosekontext bewahren und einem begrenzten Fallback-Pfad folgen, nicht standardmäßig unbegrenzt wiederholt werden.

Wiederherstellungsqualität überwachen und Fehlerpfade testen

Protokollieren Sie die Operation, den Endpunkt, den HTTP-Status, den Anwendungsfehlercode, die Versuchnummer, die Latenz, die nächste geplante Aktion und, sofern bereitgestellt, die Anfragekennung des Anbieters. Vermeiden Sie die Aufzeichnung von API-Schlüsseln, unnötigen Adressdaten oder uneingeschränkten Antworttexten. Maskieren oder hashen Sie Trackingkennungen, wenn die vollständigen Werte nicht benötigt werden.

Verfolgen Sie Raten für ungültige Eingaben, Drosselungen, das Alter der Warteschlange, ausgeschöpfte Wiederholungen und die letzte erfolgreiche Synchronisierung getrennt. Eine Integration kann eine niedrige HTTP-Fehlerrate aufweisen und trotzdem veraltete Sendungsinformationen bereitstellen. Kundenorientierte Seiten sollten den zuletzt bekannten Sendungsstatus beibehalten und einen Aktualisierungsfehler von einer vom Frachtführer gemeldeten Lieferausnahme unterscheiden.

Testen Sie vor der Veröffentlichung fehlerhafte Eingaben, gültige Kennungen ohne Ereignisse, beide Formen von Retry-After, fehlende Header, teilweise fehlgeschlagene Stapel, Timeouts nach Schreibvorgängen und die erneute Zustellung aus der Warteschlange. Simulieren Sie außerdem einen ausreichend langen Ausfall, um das Retry-Budget auszuschöpfen. Der Test ist nur dann erfolgreich, wenn die Arbeit vorhersehbar beendet oder zurückgestellt wird, erfolgreiche Elemente nicht unnötig erneut verarbeitet werden und fehlgeschlagene Elemente wiederherstellbar bleiben.

FAQ

Soll eine ungültige Trackingnummer automatisch wiederholt werden?

Nicht, wenn die API die Eingabe ausdrücklich als ungültig ablehnt. Korrigieren Sie zuerst die Nummer, die Auswahl des Frachtführers oder die erforderlichen Felder. Wenn die Antwort stattdessen bedeutet, dass Sendungsereignisse noch nicht verfügbar sind, verwenden Sie den dokumentierten Aktualisierungsprozess, statt dies als Validierungsfehler zu behandeln.

Bedeutet HTTP 200, dass eine Stapelanfrage vollständig erfolgreich war?

Nicht unbedingt. Prüfen Sie das Antwortschema des Anbieters auf Ergebnisse auf Operations- und Elementebene. Speichern Sie erfolgreiche Elemente und isolieren Sie Fehler, damit die Wiederholung eines Elements nicht unnötig die übrigen Elemente wiederholt.

Wie viele Wiederholungsversuche sollte eine Tracking-Integration zulassen?

Es gibt keine universelle Anzahl. Legen Sie anhand der Vorgaben des Anbieters, der Sicherheit der Operation und der Dauer, für die das Ergebnis nützlich bleibt, sowohl ein Versuchslimit als auch ein Zeitbudget fest. Eine geplante Synchronisierung im Hintergrund kann ein anderes Wiederherstellungsfenster tolerieren als eine interaktive Kundenanfrage.

Soll ein Timeout eine Sendung sofort als fehlgeschlagen markieren?

Nein. Ein Anfrage-Timeout ist ein Integrationsergebnis und kein Sendungsereignis. Bewahren Sie den zuletzt bekannten Trackingstatus, planen Sie eine sichere Wiederherstellung und vermeiden Sie es, ein Verbindungsproblem in eine Benachrichtigung über eine fehlgeschlagene Lieferung umzuwandeln.

Was soll geschehen, wenn die Wiederholungen ausgeschöpft sind?

Verschieben Sie die Aufgabe mit ihrem Diagnosekontext in eine dauerhafte Warteschlange für fehlgeschlagene Aufgaben oder zur Überprüfung. Ermitteln Sie, ob die Wiederherstellung eine korrigierte Eingabe, wiederhergestellte Zugangsdaten, Unterstützung durch den Anbieter oder eine spätere kontrollierte erneute Verarbeitung erfordert. Verwerfen Sie die Aufgabe nicht stillschweigend und starten Sie nicht denselben unbegrenzten Wiederholungszyklus erneut.

Quellen

Loading