[RAILS] Fehlerbehandlung mit Graphql-Ruby

Einführung

Vor kurzem habe ich API mit graphql-ruby implementiert. Daher habe ich nach der besten Vorgehensweise für die Fehlerbehandlung in graphql gesucht. Ich fange gerade erst an, also gibt es einen besseren Weg! Wir suchen nach Kommentaren.

Fehlerklassifizierung

Bevor wir mit der Implementierung der Fehlerbehandlung fortfahren, gibt es verschiedene Arten von Fehlern. Lassen Sie mich sie daher vorstellen. Die folgenden Artikel sind sehr einfach zu verstehen und zu organisieren, daher verweise ich auf sie.

Konzept der Fehlerbehandlung (Ausnahmedesign) in der Rails-Anwendung

Hier wird es wie folgt in zwei Typen eingeteilt, abnormales System und quasi-abnormales System.

Für diese beiden Fehlertypen gelten die folgenden Anforderungen.

--Abnormal: Zeigen Sie die Vorlagenmeldung auf der Vorderseite an und benachrichtigen Sie den Entwickler

Der Punkt ist, dass das abnormale System die Nachricht der festen Vorlage anzeigt, aber das quasi abnormale System die Nachricht von der API sendet. Das Hauptproblem ist die Implementierung dieser Anforderung.

Graphql-Ruby-Spezifikationen

In graphql-ruby wird im Fehlerfall json mit den folgenden Fehlern als Schlüssel zurückgegeben.

"errors": [
    {
      "message": "error message",
      "locations": [],
      "extensions": {
        "code": "ERROR_CODE"
      }
    }
  ]

Diese Fehlermeldung wird hauptsächlich durch Fehler in der Schnittstelle verursacht. Zum Beispiel, wenn null in dem auf der Vorderseite übergebenen Argument enthalten ist.

Der obige Fehler kann auch durch direktes Schreiben des Codes wie folgt erzeugt werden.

sample.ruby


raise GraphQL::ExecutionError.new('error message', extensions: {code: "ERROR_CODE"})

Implementierung

Aus den obigen Spezifikationen ist ersichtlich, dass Fehler als Rückgabewert für abnormale Fehler zurückgegeben werden. Was ist also mit dem quasi abnormalen System? Die Anforderungen an das quasi abnormale System sind wie folgt.

Die erste Anforderung ist in Ordnung, da Sie eine Fehlermeldung übergeben können, indem Sie den obigen Grafikfehler auslösen. So wie es ist, kann es jedoch nicht von einem abnormalen Fehler auf der Vorderseite unterschieden werden.

Also habe ich beschlossen, json wie folgt anzupassen.

sample.ruby


raise GraphQL::ExecutionError.new('error message', extensions: {customCode: "ERROR_CODE"})

Es ist Code-> CustomCode. Wenn auf der Vorderseite customCode als Schlüssel vorhanden ist, wird eine Fehlermeldung angezeigt. Abgesehen davon ist es durch Anzeigen der Nachricht der Vorlage möglich, die Verarbeitung des abnormalen Systems und des quasi-abnormalen Systems zu trennen.

Referenzmaterial

graphql-ruby offiziell Umgang mit Fehlern in GraphQL

Recommended Posts

Fehlerbehandlung mit Graphql-Ruby
Tipps zur Behandlung von gRPC-Fehlern in Ruby
Vermeiden Sie den Fehler, den Yuma in Java gemacht hat
Fehler bei der Implementierung der Tagging-Funktion
Verwenden Sie MouseListener für die Verarbeitung
Fehlerbehandlung mit Graphql-Ruby
NameError in Incomes # Indexfehler
ActiveRecord :: NotNullViolation im Gerätefehler
[Ruby] Ausnahmebehandlung in Funktionen
npm-Fehler im Docker-Tutorial
Fehler in der Spring-Datenbankverbindung
Ausnahmebehandlungstechniken in Java
[Rails] Unerwarteter Validierungsfehler im Gerät
411 Fehler: Erforderliche Länge bei der SOAP-Kommunikation
Fehler in ./gradlew: Symbol nicht gefunden
Tipps zum Umgang mit Enum mit Thymeleaf
Fehler bei der Implementierung der Tagging-Funktion
Tipps zum Umgang mit Pseudoelementen in Selen
Fehler bei der Implementierung bei der Implementierung der Spring-Validierung
Rails-Konsole Falsche Behandlung von Zeichenfolgenwertfehlern
Hinzufügen, wenn nicht in Set, Fehlermeldung, wenn
So zeigen Sie Fehlermeldungen auf Japanisch an
Installieren Sie letsencrypt im Java Certificate Keystore (2. Antwort auf Fehler beim Erstellen des PKIX-Pfads fehlgeschlagen)
Tipps zur Behandlung von gRPC-Fehlern in Ruby