Sie haben gerade auf eine Schaltfläche geklickt, um einen komplexen Bericht auszuführen. Oder Sie haben vielleicht einen Video-Transkodierungsauftrag angefordert. Anstatt dass die Seite minutenlang einfriert, erhalten Sie sofort eine Nachricht: „Ihre Anfrage wurde zur Bearbeitung angenommen.“ Wenige Minuten später erhalten Sie eine E-Mail mit einem Link zu Ihrem fertigen Bericht.
Dieses reibungslose, asynchrone Erlebnis ist ein Kennzeichen gut konzipierter moderner Software. Und es wird durch einen entscheidenden, doch oft missverstandenen HTTP-Statuscode ermöglicht: 202 Accepted
.
Im Gegensatz zu seinem Verwandten 200 OK
, der „Ich bin jetzt fertig“ bedeutet, oder 201 Created
, der „Ich habe etwas Neues erstellt“ bedeutet, geht es beim Statuscode 202 Accepted
darum, Erwartungen zu managen. Es ist die Art und Weise des Servers zu sagen: „Nachricht erhalten. Ich verstehe, was Sie von mir wollen. Ich kann Ihnen das Ergebnis jetzt nicht liefern, aber ich habe es in die Warteschlange gestellt und werde mich darum kümmern. Sie müssen nicht warten.“
Es ist das digitale Äquivalent dazu, einem vielbeschäftigten Restaurantmitarbeiter Ihr Ticket zu geben. Sie bringen Ihnen nicht sofort Essen, aber Sie vertrauen darauf, dass Ihr Platz in der Schlange sicher ist und Ihr Essen irgendwann fertig sein wird.
Wenn Sie APIs entwickeln oder nutzen, die langwierige Aufgaben verarbeiten, ist das Verständnis von 202 Accepted
entscheidend für die Erstellung reaktionsschneller, skalierbarer und benutzerfreundlicher Anwendungen.
Was bedeutet das also, und warum ist es wichtig, dass Entwickler, Tester und API-Konsumenten es verstehen?
Bevor wir uns mit den Mechanismen befassen: Wenn Sie APIs entwerfen, die asynchrone Workflows erfordern, benötigen Sie ein Tool, das Ihnen hilft, diese komplexen Interaktionen zu testen und zu visualisieren. Laden Sie Apidog kostenlos herunter; es ist eine All-in-One-API-Plattform, mit der Sie `202`-Antworten einfach simulieren, Polling-Mechanismen testen und sicherstellen können, dass Ihre asynchronen Prozesse robust und zuverlässig sind.
Lassen Sie uns nun aufschlüsseln, was 202 Accepted
bedeutet, wann man es verwendet und wie man es korrekt implementiert.
Die Bühne bereiten: Das Problem des synchronen Denkens
Um zu verstehen, warum 202
notwendig ist, müssen wir zunächst die Einschränkungen synchroner Anfragen erkennen.
Der typische HTTP-Anfrage-Antwort-Zyklus ist synchron und blockierend:
- Client: Sendet eine Anfrage.
- Client: Wartet... (dies wird oft als "Time to First Byte" oder TTFB bezeichnet).
- Server: Verarbeitet die Anfrage (dies kann komplexe Berechnungen, Datenbankabfragen, Aufrufe anderer Dienste umfassen).
- Server: Sendet eine Antwort (
200 OK
,201 Created
usw.). - Client: Empfängt die Antwort und reagiert darauf.
Dieses Modell funktioniert perfekt für schnelle Operationen wie das Abrufen eines Benutzerprofils, das Auflisten von Produkten oder das Aktualisieren eines einzelnen Feldes. Aber was, wenn die Operation 5 Sekunden dauert? 30 Sekunden? 5 Minuten?
- Die Verbindung könnte abbrechen, was zu Fehlern führt.
- Der Browser oder die App des Benutzers würde einfrieren, was eine schlechte Benutzererfahrung schafft.
- Ihre Serverprozesse wären blockiert, könnten keine anderen eingehenden Anfragen bearbeiten, was zu schlechter Skalierbarkeit führt.
Der Statuscode 202 Accepted
ist die elegante Lösung für dieses Problem. Er durchbricht die blockierende Natur von HTTP und ermöglicht asynchrone Verarbeitung.
Was bedeutet HTTP 202 Accepted wirklich?
Der HTTP-Statuscode 202 Accepted
ist im RFC als Erfolgsantwort definiert. Es handelt sich jedoch um eine sehr spezifische Art von Erfolg. Der Statuscode 202 Accepted gehört zur 2xx-Kategorie, die im Allgemeinen Erfolg anzeigt. Er bedeutet, dass:
- Die Anfrage wurde empfangen und verstanden.
- Die Anfrage wurde zur Bearbeitung angenommen.
- Die Verarbeitung ist noch nicht abgeschlossen.
- Die Verarbeitung kann eventuell zu einer abgeschlossenen Aktion führen oder auch nicht (sie könnte sogar später fehlschlagen).
Im Gegensatz zu 200 OK
, was bedeutet, dass die Anfrage erfolgreich bearbeitet und abgeschlossen wurde, sagt uns 202 etwas anderes:
Der Server hat die Anfrage angenommen, aber die Verarbeitung ist noch nicht abgeschlossen.
Entscheidend ist, dass die Antwort dem Client einen Hinweis geben sollte, wo er den Status der Anfrage überprüfen kann oder wo das Endergebnis in Zukunft verfügbar sein wird.
Mit anderen Worten, 202 ist die höfliche Art des Servers zu sagen:
„Hey, ich habe Ihre Anfrage erhalten. Ich arbeite daran. Aber erwarten Sie das Ergebnis nicht sofort.“
Dies macht es besonders nützlich für asynchrone Operationen, die Zeit in Anspruch nehmen, wie das Senden einer E-Mail, die Verarbeitung eines großen Datensatzes oder das Starten eines Hintergrundjobs.
Warum gibt es 202 Accepted?
Nicht alle Anfragen können sofort bearbeitet werden. Stellen Sie sich vor, jedes Mal, wenn Sie einen API-Aufruf senden, müsste der Server warten, bis der gesamte Auftrag abgeschlossen ist, bevor er antwortet. Das könnte zu Folgendem führen:
- Timeouts bei langwierigen Aufgaben.
- Schlechte Benutzererfahrung, da Clients hängen bleiben würden.
- Serverüberlastung, da Ressourcen gebunden sind, bis die Aufträge abgeschlossen sind.
Der 202 Statuscode löst dieses Problem, indem er Servern ermöglicht, Anfragen zu bestätigen, ohne dass Clients warten müssen.
Der asynchrone Workflow: Eine Schritt-für-Schritt-Analyse
Gehen wir ein konkretes Beispiel durch. Stellen Sie sich eine API zur Generierung personalisierter Datenberichte vor.
Schritt 1: Die Anfrage des Clients
Eine Client-Anwendung sendet eine POST
-Anfrage, um die Berichtsgenerierung zu starten.
POST /api/reports/generate HTTP/1.1Host: api.example.comContent-Type: application/jsonAuthorization: Bearer <token>
{
"type": "annual_sales",
"year": 2023,
"format": "pdf"
}
Schritt 2: Die 202-Antwort des Servers
Der Server empfängt die Anfrage. Er validiert, dass die Anfrage wohlgeformt ist und der Benutzer autorisiert ist. Anschließend platziert er den Auftrag sofort in eine Verarbeitungswarteschlange (unter Verwendung eines Systems wie Redis, RabbitMQ oder Amazon SQS) und antwortet.
HTTP/1.1 202 AcceptedLocation: <https://api.example.com/api/reports/status/job-12345Content-Type:> application/json
{
"message": "Your report generation request has been accepted and is being processed.",
"job_id": "job-12345",
"status_url": "<https://api.example.com/api/reports/status/job-12345>",
"estimated_completion_time": "2023-10-27T10:05:00Z"
}
Diese Antwort ist unglaublich mächtig. Lassen Sie uns sie aufschlüsseln:
HTTP/1.1 202 Accepted
: Die Kernbotschaft: „Ich habe es.“Location
Header: Ein Standard-HTTP-Header, der auf eine URL verweist, unter der der Status der Anfrage überwacht werden kann. Dies ist eine Best Practice für 202-Antworten.- Antwortkörper: Bietet hilfreiche, menschen- und maschinenlesbare Informationen darüber, was als Nächstes passiert. Die
job_id
undstatus_url
sind entscheidend.
Schritt 3: Die asynchrone Verarbeitung
Der Client kann nun andere Dinge tun. Währenddessen auf dem Server:
- Ein separater Hintergrund-Worker (oder Prozess) holt den Auftrag aus der Warteschlange.
- Er führt die zeitaufwendige Aufgabe aus: Datenbankabfrage, Datenkompilierung, PDF-Generierung.
- Nach Abschluss speichert er das Ergebnis (z. B. im Cloud-Speicher wie S3) und aktualisiert den Auftragsstatus auf „abgeschlossen“.
Schritt 4: Der Client überprüft den Abschluss
Der Client kann nun die in der 202-Antwort bereitgestellte `status_url` abfragen (pollen).
GET https://api.example.com/api/reports/status/job-12345
Die Antwort auf diese Polling-Anfrage kann sich im Laufe der Zeit ändern:
- Anfangs:
{"status": "processing", "progress": 45}
- Bei Abschluss:
{"status": "completed", "download_url": "<https://api.example.com/api/reports/download/job-12345.pdf>"}
Alternativ könnte der Server eine Benachrichtigung über einen Webhook an eine vom Client bereitgestellte URL senden, was ein fortschrittlicheres und effizienteres Muster als Polling ist.
Hauptmerkmale von 202 Accepted
Hier sind die wesentlichen Merkmale einer 202-Antwort:
- Anfrage empfangen: Der Server hat Ihre Anfrage erhalten.
- Verarbeitung nicht abgeschlossen: Die eigentliche Aufgabe ist noch im Gange.
- Keine Abschlussgarantie: Im Gegensatz zu 200 verspricht eine 202 nicht, dass der Auftrag erfolgreich sein wird, sondern nur, dass er angenommen wurde.
- Nützlich für asynchrone Workflows: Hintergrundjobs, Warteschlangen oder verzögerte Verarbeitung.
202 Accepted vs. andere Erfolgscodes: Den Unterschied kennen
Es ist leicht, `202` mit anderen 2xx-Codes zu verwechseln. Hier ist ein einfacher Spickzettel:
200 OK
: „Ich habe Ihre Anfrage erfolgreich bearbeitet und hier ist das Ergebnis sofort.“ (Synchron, sofortiges Ergebnis)201 Created
: „Ich habe eine neue Ressource sofort erfolgreich erstellt. Hier ist ihr Speicherort und ihre Daten.“ (Synchron, sofortige Erstellung)202 Accepted
: „Ich werde Ihre Anfrage bearbeiten. Prüfen Sie später das Ergebnis.“ (Asynchron, verzögerte Verarbeitung)204 No Content
: „Ich habe Ihre Anfrage erfolgreich bearbeitet, habe aber keinen Inhalt zum Zurücksenden.“ (Synchron, kein Body)
Verwenden Sie `202`, wenn das Ergebnis in Zukunft verfügbar sein wird, nicht sofort.
Warum 202 Accepted verwenden? Die wichtigsten Vorteile
- Verbesserte Benutzererfahrung (UX): Die Client-Anwendung bleibt reaktionsfähig. Benutzer erhalten sofortiges Feedback, dass ihre Anfrage empfangen wurde, anstatt eines endlosen Ladekreises.
- Bessere Server-Skalierbarkeit: Die Haupt-Request-Handling-Threads des Servers werden fast sofort freigegeben. Sie delegieren die aufwendige Arbeit an Hintergrund-Worker, wodurch der Server viel mehr eingehende Anfragen bearbeiten kann.
- Umgang mit Unsicherheit: Der Server kann eine Anfrage annehmen, auch wenn er nicht 100% sicher ist, ob sie später erfüllt werden kann. Zum Beispiel könnte er eine Anfrage annehmen, die von einem Drittanbieterdienst abhängt, der vorübergehend nicht verfügbar ist.
- Realistisch für komplexe Operationen: Es modelliert genau reale Prozesse, die Zeit in Anspruch nehmen, wie das Senden von E-Mails, die Videoverarbeitung, das Ausführen von Machine-Learning-Modellen oder die Handhabung großer Datenexporte.
Praktische Anwendungsfälle für HTTP 202
Sie werden `202 Accepted` in vielen modernen Anwendungen finden:
- Dateiverarbeitung: Bild-/Video-Transkodierung, Dokumentenkonvertierung (z. B. PDF-Generierung).
- Datenoperationen: Generierung großer Berichte, Datenexport/-import, Massen-E-Mail-Versand.
- KI/Machine Learning: Übermittlung einer Aufgabe für Modelltraining oder Inferenz.
- Zahlungsabwicklung: Einige Zahlungsgateways akzeptieren eine Zahlungsanfrage asynchron.
- DevOps/CI-CD: Auslösen einer Build-Pipeline. Die API akzeptiert die Anfrage sofort und gibt einen Link zu den Build-Logs zurück.
Vorteile der Verwendung von 202 Accepted
Warum sollten Entwickler und API-Designer 202 verwenden?
- Verhindert Client-Timeouts: Benutzer müssen nicht warten.
- Verbessert die Skalierbarkeit: Server werden bei langen Aufgaben nicht blockiert.
- Besseres Benutzerfeedback: Statt Stille wissen Clients, dass die Anfrage bearbeitet wird.
- Unterstützt asynchrone Architekturen: Essenziell für moderne Microservices.
202 Accepted in asynchronen Workflows
So funktioniert es typischerweise:
- Client sendet eine Anfrage.
- Server antwortet mit 202 und möglicherweise einer „Status-URL“.
- Client prüft erneut den Status-Endpunkt, um zu sehen, ob der Auftrag abgeschlossen ist.
Zum Beispiel:
{
"status": "processing",
"check_status": "/jobs/12345/status"
}
Dieses Muster hält beide Seiten zufrieden: Der Client erhält sofort eine Bestätigung, und der Server bekommt Freiraum.
202 Workflows mit Apidog testen

Das Testen eines asynchronen API-Flows ist komplexer als das Testen eines einfachen synchronen Aufrufs. Hier erweist sich Apidog als unschätzbares Werkzeug.
Mit Apidog können Sie:
- Den Flow skripten: Erstellen Sie ein Testszenario, das zuerst die
POST
-Anfrage sendet und validiert, dass sie eine202
mit einerstatus_url
zurückgibt. - Variablen extrahieren: Verwenden Sie Apidogs Skripting, um die
job_id
oderstatus_url
automatisch aus der202
-Antwort zu extrahieren und als Umgebungsvariable zu speichern. - Polling testen: Erstellen Sie eine nachfolgende
GET
-Anfrage, die die extrahierte Variable verwendet, um diestatus_url
aufzurufen. Sie können Apidog so konfigurieren, dass diese Anfrage wiederholt wird, bis sie einen „completed“-Status erhält. - Das Endergebnis validieren: Sobald der Auftrag abgeschlossen ist, schreiben Sie Assertions, um die endgültige Antwort von der Download-URL zu validieren.
Dies ermöglicht es Ihnen, das Testen des gesamten asynchronen Ablaufs zu automatisieren, wodurch Zuverlässigkeit gewährleistet und Regressionen abgefangen werden.
Wie man 202 Accepted-Antworten testet (mit Apidog)

Hier glänzt **Apidog**. Im Gegensatz zu statischen Tools ermöglicht Apidog Ihnen:
- Anfragen senden und verschiedene Statuscodes (wie 202) simulieren.
- API-Endpunkte mocken, um asynchrone Workflows zu testen.
- APIs dokumentieren, damit Entwickler wissen, was von einer 202-Antwort zu erwarten ist.
- Mit Teammitgliedern zusammenarbeiten, um die asynchrone Verarbeitung zu verfeinern.
Mit Apidog können Sie End-to-End-202-Workflows von der Annahme bis zum Abschluss erstellen und testen, ohne Tools wechseln zu müssen.
Potenzielle Fallstricke und häufige Missverständnisse
Allerdings kann 202 missbräuchlich verwendet werden. Einige Fallstricke sind:
- Annahme des Abschlusses: Nur weil die Anfrage angenommen wurde, heißt das nicht, dass sie erfolgreich war.
- Keine Nachverfolgung anbieten: APIs sollten Möglichkeiten für Clients bieten, den Job-Status zu überprüfen.
- Übermäßiger Gebrauch von 202: Verwenden Sie es nicht für einfache, sofortige Operationen – das verwirrt Clients.
Herausforderungen und Best Practices
Die korrekte Implementierung von `202` erfordert sorgfältige Überlegung.
- Einen Status-Endpunkt bereitstellen: Dies ist nicht verhandelbar. Sie müssen eine URL (über den
Location
-Header oder den Antwortkörper) bereitstellen, unter der der Client den Fortschritt und das Endergebnis der Anfrage überprüfen kann. - Idempotenz ist entscheidend: Wenn ein Client nicht sicher ist, ob seine Anfrage durchgegangen ist (z. B. aufgrund eines Netzwerkproblems), könnte er es erneut versuchen. Ihre API sollte so konzipiert sein, dass sie doppelte Anfragen elegant behandelt, indem Idempotenzschlüssel verwendet werden, um zu verhindern, dass derselbe Auftrag mehrfach in die Warteschlange gestellt wird.
- Klare Erwartungen setzen: Verwenden Sie den Antwortkörper, um eine geschätzte Abschlusszeit oder eine einfache Statusmeldung (
queued
,processing
,failed
,succeeded
) anzugeben. - Webhooks in Betracht ziehen: Für eine effizientere Alternative zum Polling ermöglichen Sie Clients, eine Webhook-URL zu registrieren, die Ihr Server aufruft, wenn der Auftrag abgeschlossen ist.
- Für Fehler planen: Der Auftrag könnte im Hintergrund fehlschlagen. Ihr Status-Endpunkt muss Fehler kommunizieren und gegebenenfalls Fehlercodes bereitstellen.
Best Practices für die Implementierung von 202 Accepted
Wenn Sie APIs entwerfen, die 202 zurückgeben, beachten Sie diese Best Practices:
- Immer Kontext zurückgeben: Stellen Sie eine Job-ID oder Status-URL bereit.
- Klar dokumentieren: Erklären Sie, wie Clients den Fortschritt überprüfen sollen.
- Wo möglich Webhooks verwenden: Clients benachrichtigen, wenn Aufgaben abgeschlossen sind.
- Nicht überstrapazieren: Geben Sie 202 nur für wirklich asynchrone Aufgaben zurück.
202 Accepted in REST- vs. GraphQL-APIs
- REST-APIs: 202 ist üblich, da Anfragen oft langwierigen Prozessen zugeordnet werden.
- GraphQL-APIs: Weniger üblich, da GraphQL synchrone Abfragen bevorzugt, aber mit asynchronen Mutationen immer noch möglich.
Fazit: Asynchrones Design annehmen
Der HTTP-Statuscode `202 Accepted` ist ein mächtiges Werkzeug im Werkzeugkasten des API-Designers. Er stellt einen Wandel dar, APIs nicht mehr als einfache Anfrage-Antwort-Mechanismen zu betrachten, sondern als Systeme zur Orchestrierung komplexer, realer Workflows. Der 202 Accepted-Statuscode mag nicht der bekannteste HTTP-Code sein, aber er spielt eine entscheidende Rolle in asynchronen API-Workflows. Er sagt Clients: „Wir haben Ihre Anfrage erhalten, aber wir arbeiten noch daran.“
Durch die Verwendung von `202` erstellen Sie APIs, die skalierbarer, widerstandsfähiger sind und eine weitaus überlegenere Erfahrung für die Entwickler, die sie nutzen, und die Endbenutzer, die letztendlich davon profitieren, bieten.
Es erkennt an, dass nicht alles in der Software sofort geschieht, und bietet eine standardisierte, robuste Möglichkeit, diese Realität zu handhaben.
Wenn Sie also das nächste Mal einen Endpunkt für eine langwierige Aufgabe entwerfen, zwingen Sie ihn nicht, synchron zu sein. Nehmen Sie die asynchrone Natur der Aufgabe an. Geben Sie einen `202 Accepted` zurück, stellen Sie eine Status-URL bereit und befreien Sie Ihre Anwendung von der Tyrannei der wartenden Anfrage. Wenn Sie APIs entwickeln oder testen, die 202 zurückgeben, benötigen Sie Tools, mit denen Sie diese Workflows problemlos simulieren, testen und dokumentieren können. Genau das bietet Apidog. Verwenden Sie ein Tool wie Apidog, um sicherzustellen, dass Ihre Implementierung robust, testbar und eine Freude bei der Integration ist. Bereit, Ihr API-Testing und Ihre Dokumentation zu vereinfachen? Laden Sie Apidog noch heute kostenlos herunter und machen Sie den Umgang mit Codes wie 202 Accepted mühelos.