Moon13

Was ist ein http 204 Fehlercode? (No Content)

Ein http 204 Fehlercode bedeutet, dass der Server die Anfrage erfolgreich bearbeitet hat und es keine zusätzlichen Inhalte gibt, die im Antwortkörper gesendet werden sollen.

Die Metadaten in den Antwortheader-Feldern beziehen sich auf die Zielressource und deren ausgewählte Darstellung, nachdem die angeforderte Aktion angewendet wurde. [1]

Beispielsweise signalisiert ein 204-Statuscode als Antwort auf eine PUT-Anfrage, dass die Anfrage erfolgreich war und das ETag-Header-Feld den neuen ETag der Zielressource enthält.

Der 204-Statuscode ermöglicht es dem Server, anzugeben, dass die Aktion erfolgreich auf die Zielressource angewendet wurde, ohne dass der Benutzer von seiner aktuellen “Dokumentansicht” weggeleitet werden muss. Es wird angenommen, dass der Benutzeragent dem Benutzer den Erfolg entsprechend seiner Benutzeroberfläche anzeigt und neue oder aktualisierte Metadaten in der Antwort auf seine aktive Darstellung anwendet.

Ein 204-Statuscode wird häufig in Dokumentbearbeitungsschnittstellen verwendet, die einer “Speichern”-Aktion entsprechen, sodass das Dokument für den Benutzer weiterhin zur Bearbeitung verfügbar bleibt. Er wird auch in Schnittstellen genutzt, bei denen automatisierte Datenübertragungen üblich sind, etwa in verteilten Versionskontrollsystemen. [2]

Eine 204-Antwort wird durch die erste leere Zeile nach den Header-Feldern beendet, da sie keinen Nachrichtenkörper enthalten kann.

Eine 204-Antwort ist standardmäßig cache-fähig, es sei denn, die Methode oder explizite Cache-Kontrollen geben etwas anderes an.

Lösung des http 204 Fehlercode

1. HTTP 204-Antwort ist cache-fähig

Standardmäßig ist die Antwort auf eine Anfrage mit dem Statuscode 204 (No Content) cache-fähig. Wenn das Caching jedoch unterbunden werden soll, müssen entsprechende Cache-Header in die Antwort aufgenommen werden.

Ein Beispiel dafür ist, wenn bei UPDATE-Operationen der Status 204 zurückgegeben wird, um zu vermeiden, dass große Nutzdaten hin und her transportiert werden müssen. Der Benutzeragent sendet die Nutzdaten an den Server, um die Ressource zu aktualisieren.

Ist die Operation erfolgreich, antwortet der Server mit dem Statuscode 204, um den Erfolg zu signalisieren, sodass die Client-Anwendung die Benutzeroberfläche aktualisieren kann, um den Nutzer über den Erfolg der Operation zu informieren.

Der 204-Statuscode wird auch häufig in Schnittstellen verwendet, bei denen automatisierte Datenübertragungen häufig vorkommen, wie z.B. in verteilten Versionskontrollsystemen.

2. Lösung des Lost-Update-Problems

Mit dem Statuscode 204 kann der Server auch einen HTTP-Header ETag bereitstellen, damit der Client die Darstellung der Ressource auf der Client-Seite validieren kann, bevor eine weitere Aktualisierung auf dem Server erfolgt – um das Lost-Update-Problem zu vermeiden.

Das Lost-Update-Problem tritt auf, wenn mehrere Personen eine Ressource bearbeiten, ohne über die Änderungen der anderen informiert zu sein. In diesem Szenario “gewinnt” die letzte Person, die die Ressource aktualisiert, und frühere Updates gehen verloren.

ETags können in Kombination mit dem If-Match-Header verwendet werden, um dem Server zu ermöglichen, zu entscheiden, ob eine Ressource aktualisiert werden soll. Wenn der ETag nicht übereinstimmt, informiert der Server den Client über eine 412 (Precondition Failed)-Antwort.

3. Best Practices

Bei der Verwendung von HTTP 204 sollten folgende Best Practices berücksichtigt werden:

  • Stellen Sie sicher, dass die Antwort entsprechend dokumentiert ist und der Client versteht, dass keine Inhalte zurückgegeben werden.
  • Verwenden Sie HTTP 204 in Szenarien, in denen es sinnvoll ist, den Erfolg der Anfrage ohne zusätzliche Daten zu bestätigen, und ein anderer Statuscode weniger treffend wäre.

204-CODE-REFERENZEN

  • Rails HTTP Status Symbol:
  • Go HTTP Status Constant: http.StatusNoContent
  • Symfony HTTP Status Constant: Response::HTTP_NO_CONTENT
  • Python2 HTTP Status Constant: httplib.NO_CONTENT
  • Python3+ HTTP Status Constant: http.client.NO_CONTENT
  • Python3.5+ HTTP Status Constant: http.HTTPStatus.NO_CONTENT
  • .NET HttpStatusCode.NoContent
  • Rust http::StatusCode::NO_CONTENT
  • Java java.net.HttpURLConnection.HTTP_NO_CONTENT
  • Apache HttpComponents Core org.apache.hc.core5.http.HttpStatus.SC_NO_CONTENT
  • Angular @angular/common/http/HttpStatusCode.NoContent

Beispiel für einen http 204 Statuscode

Hier ist ein Beispiel für eine Anfrage und eine Antwort, die einen http 204 Statuscode ergeben könnte:

Anfrage:

sqlCode kopierenDELETE https://example.com/user/123 HTTP/1.1
Host: example.com
Authorization: Bearer <access_token>

Antwort:

yamlCode kopierenHTTP/1.1 204 No Content
Date: Wed, 16 Mar 2023 12:00:00 GMT
Server: nginx

In diesem Beispiel sendet der Client eine DELETE-Anfrage, um eine Benutzerressource mit der ID 123 auf dem Server example.com zu löschen. Die Anfrage enthält einen Authorization-Header mit einem Zugriffstoken zur Authentifizierung der Anfrage.

Der Server bearbeitet die Anfrage erfolgreich und sendet den Statuscode 204 No Content zurück, was anzeigt, dass die Anfrage erfolgreich bearbeitet wurde, aber es keinen Antwortkörper gibt, der zurückgesendet werden könnte. Da die Ressource erfolgreich gelöscht wurde, gibt es keinen Inhalt, der gesendet werden könnte.

Der Server fügt auch einige Header wie Datum und Server in die Antwort ein, die zusätzliche Informationen zur Antwort liefern. Der 204-Statuscode wird oft für DELETE-Anfragen verwendet, bei denen der Client eine Ressource löschen möchte und keinen Inhalt in der Antwort erwartet.

Was ist der Unterschied zwischen einem http 200 und einem 204 Statuscode?

Der Hauptunterschied zwischen einem 200- und einem 204-Statuscode besteht darin, dass ein 200-Statuscode angibt, dass der Server die Anfrage erfolgreich bearbeitet hat und eine Antwort mit einem Nachrichtenkörper zurückgibt, der die angeforderten Informationen enthält, während ein 204-Statuscode anzeigt, dass die Anfrage erfolgreich bearbeitet wurde, es jedoch keinen Antwortkörper gibt, der an den Client zurückgesendet werden kann.

Mit anderen Worten, eine 200-Antwort enthält einen Antwortkörper mit Daten, während eine 204-Antwort keinen Antwortkörper enthält.

Einige spezifische Unterschiede zwischen diesen beiden Statuscodes sind:

  • Ein 200-Statuscode wird verwendet, wenn der Server die Anfrage erfolgreich bearbeitet und eine Antwort mit einem Nachrichtenkörper zurückgibt, der die angeforderten Informationen enthält. Dies könnte HTML-Inhalte, JSON-Daten oder andere Arten von Inhalten umfassen, die der Client angefordert hat.
  • Ein 204-Statuscode wird verwendet, wenn der Server die Anfrage erfolgreich bearbeitet hat, aber keine Inhalte an den Client zurückzugeben sind. Dies wird typischerweise für Anfragen verwendet, bei denen der Client signalisieren möchte, dass die Anfrage abgeschlossen ist, wie bei einer DELETE-Anfrage.

Fazit

Generell wird der 200-Statuscode für die meisten Arten von erfolgreichen Anfragen verwendet, während der http 204 Statuscode verwendet wird, wenn der Server die Anfrage erfolgreich bearbeitet hat, aber keine Inhalte an den Client zurückzugeben sind.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top