578 Stimmen

Soll eine RESTful "PUT"-Operation etwas zurückgeben....

Ich frage mich, welche Meinungen die Leute zu einer RESTful PUT-Operation haben, die in der Antwort keine Daten (null) zurückgibt.

4voto

Brian Agnew Punkte 260470

Die HTTP/1.1 Spezifikation (Abschnitt 9.6) behandelt die geeigneten Antwort-/Fehlercodes. Allerdings wird der Antwortinhalt nicht behandelt.

Was würden Sie erwarten? Ein einfacher HTTP-Antwortcode (200 etc.) scheint mir klar und eindeutig zu sein.

0 Stimmen

Ja, aber was ist, wenn Sie überprüfen möchten, ob die eingefügten Daten in die Datenbank nach einem PUT oder POST wirklich die Daten darstellen, die Sie möchten. Es wäre besser, wenn das HTTP den Body der Antwort zurücksenden könnte.

2 Stimmen

@tnkh, was Sie vorschlagen, ist einfach eine schreckliche Idee. Führen Sie nach einem erfolgreichen Update einen separaten GET-Aufruf durch, um zu erreichen, was Sie möchten. Um die Leistung sicherzustellen, führen Sie eine Zwischenschicht ein, wenn Sie in diesem Bereich Probleme haben. Diese Probleme können nicht gelöst werden, indem man mit einer Art Logik herumspielt, bei der alles erlaubt ist. Bitte vermeiden Sie es, mit den "festen" und grundlegenden Programmierprinzipien herumzuspielen, die im Jahr 2020 selbstverständlich sein sollten. Es ist eine Schande!

1 Stimmen

@XDS Ich erkenne den ersten Teil des Kommentars an. Aber ich kann nicht aufhören, mit den Augen zu rollen danach. Lustiger Kommentar

0voto

dc360 Punkte 215

Http-Antwortcode 201 für "Erstellt" zusammen mit einem "Standort"-Header, der darauf hinweist, wo der Client die neu erstellte Ressource finden kann.

8 Stimmen

PUT-Objekte sind keine neu erstellten Ressourcen (oder sollten es nicht sein)

12 Stimmen

@kdazzle PUT kann sicherlich eine neu erstellte Ressource sein, und wäre oft. w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.6

0 Stimmen

@CharlieS Zustimmung. An dieser Antwort gibt es überhaupt nichts auszusetzen. Tatsächlich wiederholt diese Antwort Punkt 2 der akzeptierten Antwort.

0voto

Bruce Punkte 1578

Ich habe RESTful API in meinen Diensten verwendet, und hier ist meine Meinung: Zuerst müssen wir zu einer gemeinsamen Ansicht gelangen PUT wird verwendet, um eine Ressource zu aktualisieren, nicht um sie zu erstellen oder abzurufen.

Ich habe Ressourcen mit definiert: Zustandslose Ressource und Zustandsbehaftete Ressource:

  • Zustandslose Ressourcen Für diese Ressourcen einfach den HttpCode mit leerem Body zurückgeben, das reicht aus.

  • Zustandsbehaftete Ressourcen Beispiel: Die Version der Ressource. Für diese Art von Ressourcen müssen Sie die Version bereitstellen, wenn Sie sie ändern möchten. Geben Sie also die vollständige Ressource zurück oder geben Sie die Version an den Client zurück, sodass der Client nach der Aktualisierungsaktion keine GET-Anfrage senden muss.

Aber für einen Dienst oder ein System ist es am wichtigsten, es einfach, klar, einfach zu verwenden und zu warten zu halten.

12 Stimmen

"PUT wird verwendet, um eine Ressource zu aktualisieren, nicht zu erstellen oder abzurufen." - das ist nicht richtig oder üblich. Nach Spezifikation kann PUT die Ressource erstellen. Klar = gemäß der allgemein bekannten Spezifikation.

-4voto

Jason S Punkte 178087

Scheint in Ordnung zu sein... obwohl ich denke, dass eine rudimentäre Anzeige von Erfolg/Fehler/Zeitpunkt der Übermittlung/# empfangene Bytes usw. wünschenswert wäre.

Bearbeiten: Ich dachte an die Datenintegrität und/oder Aufzeichnung; Metadaten wie ein MD5-Hash oder Zeitstempel für den Empfangszeitpunkt können für große Datendateien hilfreich sein.

2 Stimmen

Wie wäre es mit 200 OK im Statusantwort-Header? Denkst du, dass es ausreicht zu sagen, "Hat gut funktioniert, danke"?

0 Stimmen

Der Antwort-Header würde den Statuscode enthalten, und ja, wir sprechen hier über HTTP :)

-4voto

AnthonyWJones Punkte 182582

Genau wie ein leerer Anforderungskörper dem ursprünglichen Zweck einer GET-Anforderung entspricht und ein leerer Antwortkörper dem ursprünglichen Zweck einer PUT-Anforderung entspricht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X