PUT
Die PUT
HTTP-Methode erstellt eine neue Ressource oder ersetzt eine Darstellung der Zielressource mit dem Anforderungs-Inhalt.
Der Unterschied zwischen PUT
und POST
besteht darin, dass PUT
idempotent ist: Es macht keinen Unterschied, ob es einmal oder mehrmals hintereinander aufgerufen wird (es gibt keine zusätzlichen Effekte).
Anforderung hat einen Body | Ja |
---|---|
Erfolgreiche Antwort hat einen Body | Eventuell |
Sicher | Nein |
Idempotent | Ja |
Cacheable | Nein |
In HTML-Formularen erlaubt | Nein |
Syntax
PUT <request-target>["?"<query>] HTTP/1.1
<request-target>
-
Identifiziert die Zielressource der Anfrage, wenn sie mit den Informationen im
Host
-Header kombiniert wird. Dies ist ein absoluter Pfad (z.B./path/to/file.html
) in Anfragen an einen Ursprungsserver und eine absolute URL in Anfragen an Proxys (z.B.http://www.example.com/path/to/file.html
). <query>
Optional-
Eine optionale Abfragekomponente, die durch ein Fragezeichen
?
eingeleitet wird. Oft verwendet, um identifizierende Informationen in Form vonkey=value
Paaren zu übertragen.
Beispiele
Erfolgreiches Erstellen einer Ressource
Die folgende PUT
-Anfrage versucht, eine Ressource bei example.com/new.html
mit dem Inhalt <p>New File</p>
zu erstellen:
PUT /new.html HTTP/1.1
Host: example.com
Content-type: text/html
Content-length: 16
<p>New File</p>
Wenn die Zielressource keine aktuelle Darstellung hat und die PUT
-Anfrage erfolgreich eine erstellt, muss der Ursprungsserver eine 201 Created
-Antwort senden:
HTTP/1.1 201 Created
Content-Location: /new.html
Wenn die Zielressource eine aktuelle Darstellung hat und diese Darstellung erfolgreich mit dem Zustand in der Anfrage modifiziert wird, muss der Ursprungsserver entweder eine 200 OK
oder eine 204 No Content
senden, um den erfolgreichen Abschluss der Anfrage anzuzeigen:
HTTP/1.1 204 No Content
Content-Location: /existing.html
Spezifikationen
Specification |
---|
HTTP Semantics # PUT |
Browser-Kompatibilität
Der Browser verwendet die PUT
-Methode nicht für vom Benutzer initiierte Aktionen, daher gilt die "Browser-Kompatibilität" nicht.
Entwickler können diese Anforderungsmethode mithilfe von fetch()
festlegen.