Wir haben eine Micro-Services-Architektur und wir haben einige Diskussionen darüber, wie wir interne Fehler dem Client aussetzen können.Gute Praktiken zur Verbreitung von Fehlern durch Micro Services
Hier ist ein Beispiel:
Nehmen wir an, wir 3 Dienstleistungen, Service A, B und C. Wenn der Client eine Anfrage an den Dienst A sendet, die öffentlich ist, dieser Dienst sendet eine Anforderung B Service das sendet eine Anfrage an Dienst C (die intern sind und Authentifizierung benötigt, aber die Anmeldeinformationen werden intern wie Umgebungsvariablen gespeichert, sie werden nicht vom Client gesendet).
Und aus irgendeinem Grund erhält die Kommunikation zwischen B und C eine 401 (könnte 422, 403 oder Client-bezogene Fehler sein), was bedeutet, dass die Anfrage nicht autorisiert wurde.
Die Kommunikation zwischen B und C intern ist, der Benutzer nicht wissen, über diese Dienste. Sollte ich unsere interne Struktur offenlegen und 401 an den Kunden senden? Ist es nicht die Schuld des Kunden? Soll ich eine 500 senden?
Wenn es nicht der Benutzerfehler ist, dann ist 5xx der richtige Antwortcodebereich. –
@OliverCharlesworth Ich stimme dir zu, und sollte ich diesen Fehler intern protokollieren und keine Informationen für den Benutzer verfügbar machen? Was denken Sie? –
Es kommt darauf an. Im Allgemeinen wird es jedoch als schlecht angesehen, interne Fehlerdetails (wie Stack-Traces) dem Benutzer zu offenbaren (sowohl von UX- als auch von Sicherheitssichtpunkten aus). Allenfalls eine Nachricht wie "500 Server Error - Ihre eindeutige Fehler-ID ist 123456", mit der Sie den Benutzer später in Ihren Fehlerprotokollen mit einer ID korrelieren können. –