Ich habe einen REST- und WCF-Dienst und möchte einen benutzerdefinierten Statuscode basierend auf der Operation senden.
Beispiel: Wenn eine Validierung fehlschlägt, möchte ich HTTP 444 senden, und wenn die Autorisierung fehlschlägt, möchte ich HTTP 455 senden
Die Frage ist, wie wir es für SOAP- und REST-Webdienste validieren lassen.
Wie verhält sich der Fehlercode auf dem Client, denn wenn Sie einen HTTP 400/500 von einem WCF-Dienst (mithilfe von SOAP) senden, wird auf dem Client eine Ausnahme ausgelöst, die den Statuscode anzeigt.
Wenn ich nun einen neuen benutzerdefinierten Statuscode sende, wie geht der Client damit um?
Antworten:
Ja, solange Sie die Klasse respektieren - dh 2xx für den Erfolg, 4xx für den Clientfehler usw. Sie können also benutzerdefinierte 4XX-Fehlercodes (vorzugsweise solche, die nicht zugewiesen sind) für die Fehlerbedingungen Ihrer eigenen Anwendung zurückgeben.
Um aus [RFC 2616] [1] zu zitieren:
Klasse'
http://tools.ietf.org/html/rfc2616#section-6.1.1
quelle
Ich empfehle , keine eigenen HTTP-Statuscodes zu erstellen, wenn für die Dinge, die Sie in Ihrem Beispiel tun möchten, bereits zutreffende Codes vorhanden sind .
Von https://tools.ietf.org/html/rfc4918#section-11.2 :
Es kann argumentiert werden, dass "nicht verarbeitbar" auf einen Validierungsfehler zurückzuführen sein könnte.
quelle
Ja, Sie können benutzerdefinierte Fehlercodes hinzufügen. Verwenden Sie nach Möglichkeit bereits vorhandene Codes, und vermeiden Sie Kollisionen, wenn Sie neue deklarieren.
Sie sollten sich jedoch bewusst sein, dass einige Proxys unbekannte Codes filtern . Ich hatte Probleme mit Benutzern, die hinter Proxys standen, die 5XX bis 500 und 4XX bis 404 zugeordnet haben. Dies führte dazu, dass meine Ajax-Aufrufe das Überprüfen des Statuscodes fehlschlugen.
quelle
Einige Anwendungen fügen ihre benutzerdefinierten Antwortcodes im Bereich von 600 bis 799 hinzu. Überprüfen Sie hier beispielsweise die Antwortcodeliste von KeyNote
Definierte Keynote-Fehlercodes (600-799)
Ob dies eine gute Praxis ist, würde ich nicht sagen, aber es ist zumindest eine interessante Referenz.
quelle
Hier ist die vollständige Liste aller verfügbaren / nicht verfügbaren
HTTP
Codes.https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
Die folgenden Pfeile können beispielsweise für
4XX
Familien verwendet werden (da sie nicht zugewiesen sind) .Ich hoffe das hilft jemandem.
Vielen Dank
quelle
Nein, Sie können nur den RFC-Dokumentationsanforderungscode verwenden, siehe Details in RFC1945
quelle