Ich bin an einer Kreuzung mit einigen API-Design für einen Client (JS in einem Browser), um mit einem Server zu sprechen. Wir verwenden HTTP 409-Konflikt, um das Fehlschlagen einer Aktion aufgrund einer aktivierten Sicherheitssperre darzustellen. Das Satefy-Schloss verhindert, dass Entwickler versehentlich Änderungen an den Produktionssystemen unserer Kunden vornehmen. Ich wurde damit beauftragt, 409s auf dem Client etwas eleganter zu behandeln, um anzuzeigen, warum ein bestimmter API-Aufruf fehlgeschlagen ist.
Meine Lösung bestand darin, die Fehlerbehandlungsroutinen aller unserer AJAX-Aufrufe zu bündeln, die eine Benachrichtigung auf dem Client anzeigen, wenn aufgrund von 409 etwas ausfällt. Dies ist in Ordnung und funktioniert gut zusammen mit anderen 4XX- und 5XX-Fehlern, die denselben Mechanismus verwenden.
Es ist ein Problem aufgetreten, bei dem einer unserer Route-Handler auf einen Fehler in der Geschäftslogik mit 409s reagiert. Mein AJAX-Wrapper meldet, dass die Sicherheitssperre aktiviert ist, während der vorhandene Failure-Handler des Clients meldet, was (seiner Meinung nach) das Problem auf dem Körper basiert der Antwort. Eine einfache Lösung wäre, entweder die Antwort des Handlers oder den Statuscode zu ändern, den wir zur Darstellung des Sicherheitsschlosses verwenden.
Was mich an den Scheideweg bringt: Sollen HTTP-Statuscodes überhaupt zur Darstellung von Fehlern in der Geschäftslogik verwendet werden? Diese Frage befasst sich mit dem gleichen Problem, mit dem ich konfrontiert bin, hat aber nicht viel Anklang gefunden. Wie in der verknüpften Antwort vorgeschlagen, neige ich dazu, HTTP 200 OK mit einem geeigneten Textkörper zu verwenden, um Fehler in der Geschäftslogik darzustellen.
Hat hier jemand eine starke Meinung? Kann mich jemand davon überzeugen, dass dies der falsche Weg ist, ein Versagen darzustellen?
400 Bad Request
als Decke HTTP-Code scheint am besten, um Business-Logik-Fehler als Klasse abzudecken.
400 Bad Request
wenn Daten fehlen oder nicht gelesen / analysiert werden können. Dh die Anforderungsdaten selbst sind in irgendeiner Weise schlecht.
400 Bad Request
. Der Grund für diese Trennung ist, dass zukünftige Systeme, Entwickler oder Leser von Dokumenten durch Ihre Abweichung vom weltweiten Standard verwirrt werden können.