REST-API-Fehler-code 500-handling
Bauen wir eine neue REST-API.
War ich argumentieren, dass der Fehler-code 500 (Internal Server Error) sollen nie zurückgegeben werden.
Nun, natürlich, wenn Sie wissen, die client-Parameter sind falsch oder etwas, das Sie haben alles unter Kontrolle und können wieder einige entsprechende Fehler-code (z.B. 422).
Also, wenn ein unerwarteter Fehler Auftritt, könnte der server:
- NICHT fangen unerwartete Fehler, so dass 500 Blasen bis zum client
- Fangen keine unerwarteten Fehler und wieder einige Fehler-code-Signalisierung eine "unerwartete situation" (ehrlich, ich konnte nicht finden, eine solche Fehler-code!)
Gibt es andere Möglichkeiten?
InformationsquelleAutor faboolous | 2015-01-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist ein server-Fehler, nicht um einen client-Fehler. Wenn der server Fehler nicht, um an den client zurückgegeben werden, es würde nicht erstellt wurde, eine ganze status-code-Klasse für Sie von Ihnen (d.h. 5xx).
Können Sie nicht die Tatsache verbergen, dass Sie entweder ein Programmierfehler oder eine Dienstleistung, die Sie verlassen sich auf ist nicht verfügbar, und das ist sicherlich nicht der client Schuld. Rückkehr in einem anderen Bereich des code in den Fällen, als die 5xx Reihe würde keinen Sinn machen.
RFC 7231 erwähnt in Abschnitt 6.6. Server Error 5xx:
Dies ist genau das der Fall. Es gibt nichts "intern" über den code "500 Internal Server Error" in dem Sinne, dass es sollte nicht ausgesetzt sein den client.
Wenn Sie möchten, zu unterscheiden zwischen einer behandelten und unbehandelten server-Ausnahme, Sie können tun, dass mit der Anmeldung (auf der server-Seite) oder in den request-body (also der client, in diesem Fall test).
hilfreiche Klärung. Aber kann diese 500 status-code zurückgegeben vom server wegen irgendwelcher Probleme mit der Formatierung in den request-body?
InformationsquelleAutor CodeCaster
Die eigentliche Frage ist, warum erzeugt es einen 500-Fehler. Wenn es im Zusammenhang mit der input-Parameter, dann würde ich behaupten, dass es behandelt werden soll intern und zurück, wie eine 400-Serie-Fehler. In der Regel ein 400, 404 oder 406 wäre angemessen zu reflektieren ungültigen Eingabe da die Allgemeine Konvention ist, dass eine RESTful-Ressource ist eindeutig durch die URL und eine URL generieren kann, eine gültige Antwort ist ein bad request (400) oder so ähnlich.
Ob der Fehler verursacht wird durch etwas anderes als die Eingänge explizit oder implizit, bereitgestellt von der Anfrage, dann würde ich sagen, ein 500-Fehler ist wahrscheinlich angemessen. So eine fehlgeschlagene Datenbankverbindung oder sonstige unvorhersehbare Fehler genau dargestellt ist durch ein 500-Serie-Fehler.
Stimmt, aber die Frage war eingebettet in den Kontext der Prüfung einer vermutlich neuen service-und einholen feedback, wie die situation letztendlich behandelt werden. Wenn ich das testen neuer Dienstleistungen und generiert eine 500 über edge-case-Eingaben von Testfällen, ich würde die fahne, als ein test fehlgeschlagen und die Arbeit mit dem Entwickler zu behandeln, das test-Szenario entweder einen aussagekräftigeren Fehler (400, 404, etc) oder ein ordnungsgemäß gewartet Anfrage (200). Es gibt wirklich unvorhersehbare Quellen der 500-Fehler, aber man kann/sollte sich zu verteidigen, gegen Sie so viel wie möglich, auch wenn das ist einfach die informativere Fehler.
InformationsquelleAutor tokkov
Die Sie vorgeschlagen, "Fang keine unerwarteten Fehler und wieder einige Fehler-code-Signalisierung "unerwartete situation" " aber konnte Sie nicht finden, wird ein entsprechender Fehlercode.
Raten Sie mal: das ist, was 5xx.
InformationsquelleAutor gnasher729
Allgemein -, 5xx-response-codes an nicht-programmatische Mängel, wie z.B. eine Datenbank-Verbindung Fehler, oder einige andere system/library dependency failure. In vielen Fällen ist es zu erwarten, dass die client kann erneut vorlegen, den gleichen Wunsch, in die Zukunft und erwarten, dass es, um erfolgreich zu sein.
Ja, einige web-frameworks reagieren mit 5xx-codes, aber diese sind in der Regel das Ergebnis von Fehlern im code und der Rahmen ist zu Abstrakt, zu wissen, was passiert ist, so dass es zu Ausfällen dieser Art der Antwort; das Beispiel soll aber nicht bedeuten, dass wir sollten in der Gewohnheit der Rückkehr 5xx-codes als Ergebnis der programmatischen Verhalten, ist unabhängig von out-of-process systems. Es gibt viele, gut definierte response-codes, die besser geeignet sind als die 5xx-codes. Nicht in der Lage ist zu analysieren/validieren einem gegebenen input ist nicht ein 5xx-Antwort, da der code unterbringen kann, eine passende Antwort, die nicht verlassen werden die Kunden denken, dass Sie erneut die gleiche Anfrage, wenn in der Tat, können Sie nicht.
Klar zu sein, wenn der Fehler vom server war aufgrund der CLIENT-Eingang, dann ist dies eindeutig ein CLIENT-Fehler und sollte behandelt werden, mit einem 4xx-response-code. Die Erwartung ist, dass der client korrigieren Sie den Fehler in Ihrer Anfrage und übermitteln.
Es ist völlig akzeptabel, jedoch fangen alle out-of-process Fehler und interpretieren Sie als einen 5xx-Antwort, aber bewusst sein, dass sollten Sie auch die weiteren Informationen in der Antwort, um anzuzeigen, was genau fehlgeschlagen ist; und noch besser, wenn Sie können SLA-Zeiten zu behandeln.
Ich glaube nicht, dass es eine gute Praxis, zu interpretieren, zu "ein unerwarteter Fehler" als einen 5xx-Fehler, da Fehler passieren.
Es ist eine gemeinsame alert-monitor, um zu beginnen Alarmierung auf 5xx Arten von Fehlern, da diese in der Regel fehlgeschlagene Systeme, sondern als failed-code. So, code entsprechend!
InformationsquelleAutor ILoveCode
80 % der Zeit, würde dies aufgrund falscher Eingabe durch in soapRequest.xml Datei
InformationsquelleAutor harveySp