HTTP-Methoden (auch HTTP-Verben genannt) signalisieren dem Server, was mit einer Ressource geschehen soll. Jede Methode hat eine eigene Bedeutung (Semantik). Die fünf wichtigsten decken die üblichen Operationen ab:

  • GET (Lesen): Fordert eine Repräsentation der angegebenen Ressource an. GET sollte nur Daten abrufen und keinen Inhalt im Request-Body senden.
  • POST (Anlegen/Verarbeiten): Übergibt Daten an die Ressource, damit der Server sie nach eigener Logik verarbeitet. Löst typischerweise eine Zustandsänderung oder Seiteneffekte aus, etwa das Anlegen einer neuen Ressource oder das Absenden eines Formulars.
  • PUT (Ersetzen): Erzeugt die Zielressource oder ersetzt ihren kompletten Zustand durch den im Request gesendeten Inhalt. Wird derselbe Inhalt erneut gesendet, ist das Ergebnis identisch.
  • PATCH (Teil-Ändern): Wendet nur teilweise Änderungen auf eine Ressource an, ohne sie vollständig zu ersetzen.
  • DELETE (Löschen): Löscht die angegebene Ressource.

Zwei Konzepte helfen bei der Auswahl der richtigen Methode:

  • Sicher (safe): Eine Methode gilt als sicher, wenn ihre Semantik im Kern nur lesend ist, der Client also keine Zustandsänderung auf dem Server erwartet. GET und HEAD sind sicher; POST, PUT, PATCH und DELETE sind es nicht.
  • Idempotent: Eine Methode ist idempotent, wenn mehrere identische Aufrufe denselben Effekt auf dem Server haben wie ein einzelner. Laut RFC 9110 sind PUT, DELETE sowie alle sicheren Methoden (GET, HEAD) idempotent. POST und PATCH sind nicht idempotent.

Welche Methode wofür:

  • Daten abrufen, ohne etwas zu verändern: GET.
  • Neue Ressource erzeugen, wenn der Server die URL/ID vergibt, oder allgemein verarbeiten: POST.
  • Ressource unter bekannter URL vollständig anlegen oder ersetzen: PUT (wiederholbar ohne Zusatzeffekte).
  • Nur einzelne Felder ändern: PATCH.
  • Ressource entfernen: DELETE.

Praktischer Nutzen: Idempotente Methoden (GET, PUT, DELETE) darf ein Client nach einem Netzwerkfehler gefahrlos erneut senden. Bei POST kann ein wiederholtes Senden dagegen versehentlich doppelte Ressourcen anlegen, weshalb es nicht idempotent ist.

MethodeBeispielBedeutungSicherIdempotent
GETGET /users/42lesenJaJa
POSTPOST /usersneu anlegen (Server vergibt ID)NeinNein
PUTPUT /users/42komplett ersetzenNeinJa
PATCHPATCH /users/42nur Teilfelder ändernNeinNein
DELETEDELETE /users/42löschenNeinJa

Die fünf Methoden an der Ressource /users. Sicher heißt nur lesend, idempotent heißt: mehrfach gesendet, gleiches Ergebnis.

Ein PATCH verändert nur die mitgeschickten Felder, hier ausschließlich die E-Mail:

PATCH, nur ein Feld ändern
PATCH /users/42 HTTP/1.1
Content-Type: application/json

{ "email": "neu@example.com" }

Quellen

Weiterlesen