1.3.1 GraphQL-Fehlermeldungen
Allgemein
Anders als REST-Endpunkte werden bei GraphQL keine HTTP Status-Codes genutzt, um einen fehlerhaften Request anzuzeigen. Stattdessen wird in der Antwort ein errors
-Array angehängt, dass alle aufgetretenen Fehlermeldungen beinhaltet.
Trotzdem wird bei einigen Fehlern ein anderer Status als 200
(OK) zurückgegeben. Oftmals ist dies ein 400
(Bad Request). Die Auswertung der Fehler sollte aber über die Analyse des error
-Arrays laufen. Die generelle Struktur einer Fehlerantwort sieht wie folgt aus:
- Response
-
errors
: Array aller Fehlermeldungen-
- Fehlermeldung
-
message
: Fehlermeldung und Stacktrace -
locations
: Ortsangabe des Fehlers im Code-
line
: Angabe der Code-Zeile, in der der Fehler auftrat -
column
: Angabe der Code-Spalte, in der der Fehler auftrat
-
-
path
: zeigt den angefragten Pfad -
extensions
: hier wird ein Enum-Wert für den spezifischen Fehler mitgegeben
-
- Fehlermeldung
-
-
Beispiel-Fehlermeldungen
Fachlicher Fehler
Validierungsfehler
Validierungsfehler werden sicherlich den größten Anteil der auftretenden Fehler ausmachen. Immer, wenn die Anfragen inhaltlich unvollständig oder fehlerhaft sind, wird ein Fehler geworfen. Beispiele sind:
-
Anfragen mit einer unbekannten Advertiser-ID führen zu einem
UnhandledError
/EntityNotFoundException
. - Wenn der Seller das angefragte SellerProduct nicht sehen darf wird ein
UnhandledError
/SellerProductNotOwnedBySellerExceptionException
geworfen. - Ein Request bei falschem
RequestProgressState
erstellen wird mit einemUnhandledError
/NotSellerCommitException
quittiert. - Enthält die Antwort des Sellers ein leeres Feld OrderNo, wird eine entsprechende Fehlermeldung zurückgegeben.
Falsche Feldnamen
Werden Feldnamen falsch oder gar nicht in Queries oder Mutations verwendet, führt dies ebenfalls zu Fehlern:
- Wenn die Anfrage leer abgeschickt wird, kommt es zu einem
NoOperationError
. - Die Anfrage eines nicht vorhandenen Feldnamen führt zu einem
FieldsOnCorrectTypeError
. - Hat die Anfrage eine invalide Struktur, so erhält man einen
SyntaxError
.
Falsche Datentypen
Anfrage mit falschem Datentypen führen zu einem UnhandledError
/ InvalidOperationException
.
Falscher Status für den SellerSync
Die Fehlermeldungen für den SellerSync müssen noch definiert werden.
Authentifizierungsfehler
Wird eine Anfrage ohne die entsprechenden Rechte gemacht, so wird ein UnhandledError
bzw. eine AuthenticationException
geworfen.
Unbestimmter Fehler
Nicht weiter definierte Fehler werden als Unexpected Execution Error
zurückgegeben.