4.6. Verwendung von HTTP-Statuscodes
4.6. Verwendung von HTTP-Statuscodes
Anwendungen, die HTTP verwenden, DÜRFEN nur registrierte HTTP-Statuscodes verwenden. Sie SOLLTEN den spezifischsten anwendbaren Statuscode verwenden, obwohl sie nicht auf die in [HTTP] definierten beschränkt sind; andere Statuscodes können verwendet werden, solange sie im Register "HTTP Status Codes" registriert sind.
Bei der Spezifizierung der Verwendung von Statuscodes SOLLTEN sich Anwendungen auf ihre generische Semantik konzentrieren und nicht auf ihre spezifische Bedeutung in einem bestimmten Kontext. Zum Beispiel ist es angemessen zu sagen:
Wenn die Anfrage erfolgreich ist, sendet der Server eine
200 OK-Antwort.
aber nicht:
Der Server sendet eine
200 OK-Antwort, wenn der Benutzer authentifiziert und berechtigt ist, auf die Ressource zuzugreifen.
Letzteres ist zu spezifisch, da es mehrere Dinge vermischt: Erfolg, Authentifizierung und Autorisierung. Eine angemessenere Aussage wäre:
Wenn die Anfrage erfolgreich ist, sendet der Server eine
200 OK-Antwort. Wenn Authentifizierung erforderlich, aber nicht bereitgestellt ist, sendet der Server eine401 Unauthorized-Antwort. Wenn der Client nicht berechtigt ist, auf die Ressource zuzugreifen, sendet der Server eine403 Forbidden-Antwort.
Anwendungen SOLLTEN NICHT neue Statuscodes definieren. In den seltenen Fällen, in denen ein neuer Statuscode wirklich notwendig ist, MUSS er gemäß dem Verfahren in [HTTP] Abschnitt 16.2 registriert werden.
Bei der Auswahl eines Statuscodes ist das allgemeine Prinzip, den spezifischsten auszuwählen, der zutrifft. Der Statuscode sollte den Hauptgrund für die Antwort vermitteln.
Wenn beispielsweise eine Anfrage fehlschlägt, weil die Ressource nicht existiert, ist 404 Not Found angemessen. Wenn sie fehlschlägt, weil der Client nicht berechtigt ist, darauf zuzugreifen, ist 403 Forbidden angemessen, auch wenn die Ressource möglicherweise nicht existiert.
Anwendungen SOLLTEN die folgenden Statuscodes angemessen verwenden:
-
200 OKfür erfolgreiche Anfragen, bei denen die Antwort eine Darstellung enthält. -
201 Createdfür erfolgreiche Anfragen, die zur Erstellung einer neuen Ressource führen. -
202 Acceptedfür Anfragen, die zur Verarbeitung akzeptiert wurden, bei denen die Verarbeitung jedoch noch nicht abgeschlossen wurde. -
204 No Contentfür erfolgreiche Anfragen, bei denen keine Darstellung zu senden ist. -
301 Moved Permanentlyoder308 Permanent Redirectfür Ressourcen, die dauerhaft verschoben wurden. -
302 Foundoder307 Temporary Redirectfür Ressourcen, die vorübergehend verschoben wurden. -
304 Not Modifiedfür bedingte Anfragen, bei denen sich die Ressource nicht geändert hat. -
400 Bad Requestfür fehlerhafte Anfragen. -
401 Unauthorizedfür Anfragen, die Authentifizierung erfordern. -
403 Forbiddenfür Anfragen, bei denen der Client nicht berechtigt ist. -
404 Not Foundfür Anfragen an nicht existierende Ressourcen. -
405 Method Not Allowedfür Anfragen mit einer unangemessenen Methode. -
406 Not Acceptablewenn der Server keine Darstellung generieren kann, die der Client akzeptiert. -
409 Conflictwenn die Anfrage mit dem aktuellen Zustand der Ressource in Konflikt steht. -
410 Gonefür Ressourcen, die existierten, aber dauerhaft entfernt wurden. -
415 Unsupported Media Typewenn derContent-Typeder Anfrage nicht unterstützt wird. -
500 Internal Server Errorfür serverseitige Fehler. -
501 Not Implementedwenn der Server die angeforderte Funktionalität nicht unterstützt. -
503 Service Unavailablewenn der Server vorübergehend nicht in der Lage ist, die Anfrage zu bearbeiten.