HTTPQUERY
Deutsch

422 Unprocessable Content

Verwendung

Der Fehler 422 Unprocessable Content zeigt an, dass der Server die Anfrage versteht, den Inhalt jedoch für semantisch ungültig hält. Der Content-Type wird erkannt (andernfalls würde ein Fehler 415 Unsupported Media Type gesendet). Auch die Syntax ist gültig (andernfalls wäre ein Fehler 400 Bad Request passender).

Ein Fehler dieser Art tritt auf, wenn die Anfrage einen XML-Anweisungsblock als Nachrichten-Body enthält, der korrekt aufgebaut und vom Server verstanden wird, aber Logikfehler enthält, die zu einem serverseitigen Fehler führen.

Hinweis

Eine 422-Anfrage erneut zu senden, ohne den Anfrage-Body zu ändern, erzeugt denselben Fehler. Der Client muss zuerst das Validierungsproblem beheben. Geben Sie 422 zurück, wenn der Content-Type erkannt wird und die Syntax gültig ist, Geschäftsregeln oder die Feldvalidierung die Daten jedoch zurückweisen.

SEO-Auswirkung

Suchmaschinen wie Google indexieren keine URL mit dem Antwortstatus 422 Unprocessable Content; folglich werden in der Vergangenheit indexierte URLs, die diesen HTTP-Statuscode zurückgeben, aus den Suchergebnissen entfernt.

Beispiel

Der Client verwendet ein XML-Dokument, um den Start von Aufgabe #100 anzufordern. Das XML-Dokument wird vom Server erkannt und ist syntaktisch korrekt. Der Server hat keinen Eintrag für eine Aufgabe mit id=100, daher ist die Anfrage nicht verarbeitbar.

Anfrage

POST /requests HTTP/1.1
Host: example.com
Content-Type: application/xml
Content-Length: 101

<?xml version="1.0" encoding="utf-8"?>
<request>
   <id>100</id>
   <action>start</action>
</request>

Antwort

HTTP/1.1 422 Unprocessable Content
Content-Type: text/html
Content-Length: 150

<html>
  <head>
    <title>Request Failed</title>
  </head>
  <body>
   <p>Task #100 is not recognized.</p>
  </body>
</html>

Behebung

Sehen Sie sich zuerst den Antwort-Body an. Die meisten APIs und Frameworks geben Fehlerdetails auf Feldebene zurück, die erklären, welcher Wert fehlgeschlagen ist und warum. Nutzen Sie diese Meldungen, um das genaue Problem einzugrenzen.

Validieren Sie den Anfrage-Body vor dem Senden gegen das erwartete Schema. Häufige Auslöser sind fehlende Pflichtfelder, falsche Datentypen (ein String, wo die API eine Zahl erwartet), ungültige E-Mail- oder Datumsformate, doppelte eindeutige Werte und Enum-Werte außerhalb der erlaubten Menge.

Stellen Sie sicher, dass der Content-Type-Header zum Format des Body passt. JSON mit dem Content-Type text/plain zu senden, führt auf vielen Servern zu Parsing-Fehlern.

In Laravel bedeutet ein 422 typischerweise, dass die Formular-Validierungsregeln nicht erfüllt wurden. Prüfen Sie das errors-Objekt in der JSON-Antwort auf die fehlgeschlagenen Feldnamen und Validierungsmeldungen. In Rails geben fehlgeschlagene Modellvalidierungen bei create oder update standardmäßig 422 zurück. Untersuchen Sie model.errors für Details.

Prüfen Sie bei REST-APIs wie GitHub oder Shopify, ob die Anfrage-Nutzlast zur aktuellen API-Version passt. Feldnamen, Pflichtparameter und zulässige Werte ändern sich zwischen Versionen.

Geben Sie serverseitig strukturierte Fehlerantworten zurück, die jedes ungültige Feld, den abgelehnten Wert und das erwartete Format auflisten. Allgemeine „validation failed“-Meldungen zwingen Clients zum Raten.

Code-Referenzen

.NET

HttpStatusCode.UnprocessableEntity

Rust

http::StatusCode::UNPROCESSABLE_ENTITY

Rails

:unprocessable_entity

Go

http.StatusUnprocessableEntity

Symfony

Response::HTTP_UNPROCESSABLE_ENTITY

Python3.5+

http.HTTPStatus.UNPROCESSABLE_ENTITY

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_UNPROCESSABLE_CONTENT
// deprecated alias: SC_UNPROCESSABLE_ENTITY

Angular

@angular/common/http/HttpStatusCode.UnprocessableEntity