Ich habe eine REST-API, die für einige Entpoinds wie DELETE, POST oder PUT einige Validierungsregeln enthält, die einen Fehler zurückgeben können.
Jetzt brauche ich einen neuen Fehlertyp wie einen unkritischen Fehler, der auf normale Weise fehlschlagen sollte, aber die Aktion ausführen sollte, wenn die Flags "Warnungen unterdrücken" gesendet werden. Ein solcher Benutzer kann gefragt werden: "Möchten Sie diesen Status wirklich ändern, sind Sie noch nicht fertig."
Frage : Gibt es eine bewährte Methode für diese Art von Fehlern?
Nebenfragen :
- Gibt es eine HTTP-Semantik für ein solches Verhalten, das ich verwenden kann?
- folge ich immer noch der REST-Idee (für mich sieht es so aus) - ich halte sie zustandslos
rm /file
, der "warnt", dass die Datei schreibgeschützt ist, während sie trotzdem gelöscht wird.409 CONFLICT
für Warnantwort verwendet. Auf diese Weise wird der Client angewiesen, dass er den Anruf mit demselben Endpunkt und Text mit den Exttra-Parametern "force = 1"Antworten:
In http gibt es keine Warnergebniscodes. Sie geben entweder einen Erfolg (200) oder einen Fehler (400, 500) zurück. Das einzige, was ich weiß, könnte analog zu dem sein, was Sie wollen, ist so etwas wie Code 401 "nicht autorisiert" - was ein völliger Fehler ist, aber die meisten Clients veranlasst, die Verbindung mit Anmeldeinformationen automatisch erneut zu versuchen.
Für eine REST-API müssen Sie dem Server den Status der Anforderung und den Umgang mit dem Ergebnis mitteilen. Sie können keinen PUT senden und erwarten einen Fehler, wenn der Client nicht fertig ist, oder Erfolg, wenn dies der Fall ist. Der Server muss dies wissen Informationen, um den richtigen Ergebniscode zurückzusenden.
Sie können also das Flag "Warnungen unterdrücken" mit Ihrer Anfrage senden. Wenn es nicht gesetzt ist, gibt der Server einen 409-Fehlercode (oder ähnliches) zurück. Wenn gesetzt, geben Sie stattdessen einen 200-Code zurück. Der Benutzer kann nach dem Senden der Statusänderung nicht gefragt werden, ob Sie diesen Status ändern möchten.
Sie können eine Anfrage an den Server stellen, um zu fragen, ob der Benutzer den Status natürlich ändern kann, und anschließend eine entsprechende Anfrage stellen.
quelle
Wenn Sie dem Benutzer erlauben möchten, Ihre normale Fehlerbehandlung zu überschreiben, können Sie einen 200 SUCCESS-Status mit zusätzlichen Informationen in erweiterten HTTP-Headern zurückgeben. Zum Beispiel könnten Sie zurückkehren
Dies würde Ihrem clientseitigen Code die Informationen geben, die erforderlich sind, um den Benutzer entweder zu warnen oder selbst Korrekturmaßnahmen zu ergreifen.
quelle