Schemasprache
Erstellt für:
- Einsteiger
- Fortgeschrittener
- Entwickler
Dies ist Teil 4 der Serie für GraphQL und Adobe Commerce. Die verwendeten Abfragen und Mutationen basieren auf einem bestimmten Datendiagramm, das auf dem Server implementiert wird und das die GraphQL-Laufzeit nutzt, um die Abfrage aufzulösen. Die GraphQL-Spezifikation definiert eine agnostische Sprache zum Ausdrücken der Typen und Beziehungen Ihres Datendiagramms.
Verwandte Videos und Tutorials zu GraphQL in dieser Reihe
Beispielschema
Im Folgenden finden Sie ein abgekürztes Schema, das die bisher betrachteten Abfragen und Mutationen unterstützt:
input FilterMatchTypeInput {
match: String
}
type Money {
value: Float
}
type Country {
id: String
full_name_english: String
}
interface ProductInterface {
sku: String
name: String
related_products: [ProductInterface]
}
type CategoryFilterInput {
name: FilterMatchTypeInput
}
type CategoryProducts {
items: [ProductInterface]
}
type CategoryTree {
name: String
products(pageSize: Int, currentPage: Int): CategoryProducts
}
type CategoryResult {
items: [CategoryTree]
}
type Products {
items: [ProductInterface]
}
type Query {
country (id: String): Country
categories (filters: CategoryFilterInput): CategoryResult
products (search: String): Products
}
input CartItemInput {
sku: String!
quantity: Float!
}
type CartPrices {
grand_total: Money
}
type Cart {
prices: CartPrices
total_quantity: Float!
}
type AddProductsToCartOutput {
cart: Cart!
}
type Mutation {
addProductsToCart(cartId: String!, cartItems: [CartItemInput!]!): AddProductsToCartOutput
}
In der Dokumentation zu GraphQL erfahren Sie mehr über die Einzelheiten des Typsystems, einschließlich der Syntax für einige hier nicht dargestellte Konzepte. Das obige Beispiel ist jedoch selbsterklärend. (Beachten Sie außerdem, wie ähnlich die Syntax der Abfragesyntax ist.) Bei der Definition eines GraphQL-Schemas geht es einfach darum, die verfügbaren Argumente und Felder eines bestimmten Typs zusammen mit den Typen dieser Felder auszudrücken. Jeder komplexe Feldtyp muss selbst über eine Definition verfügen usw., bis Sie einfache Skalartypen wie String
erhalten.
Die input
-Deklaration ist in jeder Hinsicht wie eine type
, definiert jedoch einen Typ, der als Eingabe für ein Argument verwendet werden kann. Beachten Sie auch die interface
. Dies dient einer Funktion, die mehr oder weniger den Schnittstellen in PHP entspricht. Andere Typen erben von dieser Schnittstelle.
Die Syntax [CartItemInput!]!
sieht kompliziert aus, ist am Ende aber ziemlich intuitiv. Die !
Innen der Klammer deklariert, dass jeder Wert im Array ungleich null sein muss, während die Klammer Außen deklariert, dass der Array-Wert selbst ungleich null sein muss (z. B. ein leeres Array).
Query
oder Mutation
durchgeführt, bei dem jedes in der Anfrage angegebene Feld geprüft wird. Für jedes Feld, das zu einem komplexen Typ aufgelöst wird, wird eine ähnliche Auflösung für diesen Typ durchgeführt usw., bis alles in Skalarwerte aufgelöst wurde.Nützliche GraphQL-Ressourcen
Commerce
- Tutorials für Commerce
- Adobe Commerce Cloud
- Fehlerbehebung
- HIPAA-fähiges Hosting
- IP-Adresse erkennen
- Marktstruktur
- Modell für globale Sendungen
- Administratorrollen
- Marketing-Flüsse
- Storefront-Optionen
- Datenfreigabe
- Mehrere Websites
- Experience Lead-Daten und -Promotions
- AEM Assets
- Migration von einer selbst gehosteten Lösung
- Einschränken des Zugriffs mit Fastly
- Technisches Onboarding und Hardware-Übergabe
- Best Practices
- Erste Schritte
- Adobe Commerce Optimizer
- Globale Referenzarchitektur
- Hilfe und Support
- Edge-Bereitstellungsdienste
- Webinare und Veranstaltungen
- GraphQL und Rest
- Adobe Developer App Builder
- API-Mesh
- Store-Administration
- Verwalten von Benutzerrollen und Berechtigungen
- Zwei-Faktor-Authentifizierung
- Währungs- und Steuerregeln verwalten
- Hinzufügen von Websites, Stores und Store-Ansichten
- Ändern der Store-URL
- Admin-URI zurücksetzen
- Versand- und Liefermethoden
- Admin-Raster und -Filter
- COMMERCE CLI
- Adobe Commerce Services
- Kundenverwaltung
- Katalogverwaltung
- Content-Management
- Marketing-Tools
- Bestellungen und Erfüllung
- B2B für Adobe Commerce
- Tools und externe Services
- Commerce Intelligence
- Commerce-Upgrades
- Backend-Entwicklung
- Best Practices für das Ändern von Datenbanktabellen
- Erstellen eines Moduls
- Produktattribut hinzufügen
- Beispiel für eine Injektion von Abhängigkeiten
- Galera-Cluster - langsame Replikation
- MySQL-Abfrage-Cache
- PT-Abfrageauszug
- Herstellen einer Verbindung zur Adobe Commerce-Datenbank und Herunterladen der Datenbank
- Native Frontend-Luma-Entwicklung
- Headless-Architektur