In GraphQL gibt es den Feld-Typ Enum. Dieser zeichnet sich durch einen selbst definierbaren Werte-Bereich aus, der auch entsprechend geprüft wird. Das hat im Gegensatz zu Strings den Vorteil, dass man nur einen der vorgegebenen Werte nutzen kann, und diese aber eben auch per Introspection ermitteln kann. Da zu jeden Wert auch eine Beschreibung abgefragt werden kann, ist es hierdurch möglich im externen System Auswahl-Felder zu generieren.
Nachteil die Enum-Typen ist allerdings, dass die Werte nach einem Bestimmten Muster aufgebaut sein müssen: Es dürfen keine Leer- oder sonstigen Sonderzeichen enthalten sein (Ausnahme ist der Unterstrich "_") und sie dürfen nicht mit einer Ziffer beginnen.
Wie ermittle ich die Werte, die ich bei einem Enum-Typen nutzen kann?
Die möglichen Werte eines Enum-Typs können per Introspection ermittelt werden. Dazu ist eine Abfragen notwendig, die wie folgt aufgebaut werden muss:
{ __type(name: "<Name des Enum-Typs>") { kind description enumValues { name description } } }
Hierbei muss als Wert für das Feld name der Name des abzufragenden Enum-Typen übergeben werden.
Beispiele
{ __type(name: "PaymentMethodEnum") { kind description enumValues { name description } } }
{ "data": { "__type": { "kind": "ENUM", "description": "Payment method enum", "enumValues": [ { "name": "PaymentOnAccount", "description": "Rechnung" }, { "name": "Cash", "description": "Barzahlung" }, { "name": "AdvancePayment", "description": "Vorauszahlung" }, { "name": "CashOnDelivery", "description": "Nachnahme" }, { "name": "DircetDebit", "description": "SEPA Lastschrift" }, { "name": "Paypal", "description": "PayPal" }, { "name": "Mollie", "description": "mollie" }, { "name": "Sofort", "description": "Klarna Sofortüberweisung (Sofort GmbH)" } ] } } }
{ __type(name: "ProductTypeEnum") { kind description enumValues { name description } } }
Den Namen eines Enum-Typen können Sie in der Dokumentation finden. Beispiel:
Verwandte Artikel