Frage HTTP-Statuscode zum Aktualisieren und Löschen?


Welchen Statuscode sollte ich einstellen? UPDATE (PUT) und DELETE (z. B. Produkt erfolgreich aktualisiert)?


992
2018-02-26 15:16


Ursprung


Antworten:


Für ein STELLEN anfordern: HTTP 200 oder HTTP 204 sollte "Ressource erfolgreich aktualisiert" bedeuten.

Für ein LÖSCHEN anfordern: HTTP 200 oder HTTP 204 sollte "Ressource erfolgreich gelöscht" bedeuten. HTTP 202 kann auch zurückgegeben werden, was bedeuten würde, dass die Anweisung vom Server akzeptiert wurde und die "Ressource zum Löschen markiert wurde".

9.6 PUT

Wenn eine vorhandene Ressource geändert wird, müssen die Antwortcodes 200 (OK) oder 204 (Kein Inhalt)> gesendet werden, um den erfolgreichen Abschluss der Anforderung anzuzeigen.

9.7 LÖSCHEN

Eine erfolgreiche Antwort SOLLTE 200 (OK) sein, wenn die Antwort eine Entität enthält, die den Status beschreibt, 202 (Akzeptiert), wenn die Aktion noch nicht ausgeführt wurde, oder 204 (Kein Inhalt), wenn die Aktion ausgeführt wurde, die Antwort jedoch nicht enthält eine Entität.

Quelle: w3.org: HTTP / 1.1-Methodendefinitionen

HTTP 200 OK: Standardantwort für erfolgreiches HTTP   Anfragen. Die tatsächliche Antwort wird   hängt von der verwendeten Anforderungsmethode ab.

HTTP 204 Kein Inhalt: Der Server hat die Anfrage erfolgreich verarbeitet, gibt jedoch keinen Inhalt zurück

Quelle: Liste der HTTP-Statuscodes: 2xx Erfolg


1543
2018-02-26 15:18



Kurze Antwort: Für PUT und DELETE sollten Sie entweder 200 (OK) oder 204 (Kein Inhalt) senden.

Lange Antwort: Hier ist ein vollständiges Entscheidungsdiagramm (zum Vergrößern klicken).

HTTP 1.1 decision diagram

Quelle: https://github.com/for-GET/http-decision-diagram


717
2018-02-26 15:23



Hier sind einige Tipps:

LÖSCHEN

  • 200 (wenn Sie einige zusätzliche Daten in der Antwort senden möchten) oder 204 (empfohlen).

  • 202 Operation gelöscht wurde noch nicht festgelegt.

  • Wenn es nichts zu löschen gibt, verwenden Sie 204  oder  404 (DELETE-Operation ist idempotent, lösche ein bereits gelöschtes Objekt) Operation erfolgreich, damit du zurückkehren kannst 204, aber es ist wahr, dass Idempotent nicht notwendigerweise die gleiche Antwort impliziert)

Andere Fehler:

  • 400  Ungültige Anforderung (Falsche Syntax oder eine schlechte Abfrage ist seltsam aber möglich).
  • 401  Nicht autorisiert Authentifizierungsfehler
  • 403  verboten: Autorisierungsfehler oder ungültige Anwendungs-ID
  • 405  Nicht erlaubt. Sicher.
  • 409  Ressourcenkonflikt kann in komplexen Systemen möglich sein.
  • Und 501, 502 im Falle von Fehlern.

STELLEN

Wenn Sie ein Element einer Sammlung aktualisieren

  • 200/204 mit den gleichen Gründen wie DELETE oben.
  • 202 wenn der Vorgang noch nicht festgelegt wurde.

Das referenzierte Element existiert nicht:

  • PUT kann sein 201 (Wenn Sie das Element erstellt haben, weil dies Ihr Verhalten ist)
  • 404 Wenn Sie keine Elemente über PUT erstellen möchten.

  • 400  Ungültige Anforderung (Falsche Syntax oder eine fehlerhafte Abfrage häufiger als bei DELETE).

  • 401  Nicht autorisiert 
  • 403  verboten: Authentifizierungsfehler oder ungültige Anwendungs-ID.
  • 405  Nicht erlaubt. Sicher.
  • 409  Ressourcenkonflikt kann in komplexen Systemen wie DELETE möglich sein.
  • 422  Nicht verarbeitbare Entität Es hilft, zwischen einer "schlechten Anfrage" (z. B. fehlerhaft formatierte XML / JSON) und ungültigen Feldwerten zu unterscheiden
  • Und 501, 502 im Falle von Fehlern.

105
2017-09-24 12:14



RFC 2616 beschreibt welche Statuscodes zu verwenden sind.

Und nein, ist es nicht immer 200.


13
2018-02-26 15:20



Neben 200 und 204, 205 (Inhalt zurücksetzen) könnte eine gültige Antwort sein.

Der Server hat die Anforderung erfüllt, und der Benutzeragent SOLLTE die Dokumentenansicht zurücksetzen, die zum Senden der Anforderung geführt hat [z. B.] Löschen des Formulars, in dem die Eingabe erfolgt ist.


7
2018-01-08 21:15



Da geht die Frage in if LÖSCHEN "sollte" zurückkehren 200 vs 204 Es ist eine Überlegung wert, dass einige Leute empfehlen, eine Entität mit Links zurückzugeben, für die die Präferenz gilt 200.

"Anstatt 204 (Kein Inhalt) zurückzugeben, sollte die API hilfreich sein und   empfehlen Orte zu gehen. In diesem Beispiel denke ich einen offensichtlichen Link zu   bieten ist " 'somewhere.com/container/' (minus 'Ressource') "- der Behälter von dem   Der Client hat gerade eine Ressource gelöscht. Vielleicht möchte der Kunde   Löschen Sie mehr Ressourcen, das wäre ein hilfreicher Link. "

http://blog.ploeh.dk/2013/04/30/rest-lesson-learned-avoid-204-responses/

Wenn ein Client auf eine 204 Antwort trifft, kann er entweder aufgeben, zu gehen   der Einstiegspunkt der API, oder gehen Sie zurück zur vorherigen Ressource es   hat besucht. Keine der beiden Optionen ist besonders gut.

Persönlich würde ich nicht sagen, dass 204 falsch ist (auch nicht der Autor; er sagt "nervig"), weil gutes Caching auf der Client-Seite viele Vorteile hat. Am besten ist es, in jeder Hinsicht konsistent zu sein.


6
2018-05-29 02:02



Im Juni 2014 RFC7231 obsoletes RFC2616. Wenn Sie REST über HTTP dann tun RFC7231 beschreibt genau, welches Verhalten von GET, PUT, POST und DELETE erwartet wird


2
2017-11-22 15:52



Wenn eine Ressource geändert wird, sollte der Antwortcode lauten 200 ("OK"). Wenn sich der Ressourcenstatus so ändert, dass der URI der Ressource geändert wird (z. B. wenn ein Benutzeraccount umbenannt wird), wird der Ressourcenzustand geändert Antwortcode ist 301 ("Permanent verschoben") und der Location-Header sollte den neuen URI bereitstellen.

Wenn ein Objekt gelöscht wird, wird der Antwortcode angezeigt sollte 200 ("OK") sein.

Folgen Sie dem untenstehenden Link für weitere Details - Statuscode für Ruhe


0
2017-12-26 07:51