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.
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.
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"})
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.
graphql-ruby offiziell Umgang mit Fehlern in GraphQL
Recommended Posts