Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le générateur d’API de données (DAB) prend en charge la combinaison de plusieurs opérations de mutation en une seule transaction. Plusieurs mutations prennent en charge les scénarios dans lesquels vous devez créer plusieurs éléments appartenant à la même entité ou créer plusieurs éléments appartenant à une entité associée. Ce guide décrit un exemple de scénario à l’aide d’une opération de mutation multiple.
Conditions préalables
- Serveur SQL existant et base de données.
- CLI du générateur d'API de données. Installer l’interface CLI
- Un client de base de données (SQL Server Management Studio, etc.)
- Si aucun client n’est installé, installez SQL Server Management Studio.
Créer des tables
Commencez par créer deux tables de base pour représenter des livres et leurs chapitres respectifs. Les livres ont une relation un-à-plusieurs avec leurs chapitres correspondants.
Connectez-vous à la base de données SQL à l’aide de votre client ou outil préféré.
Créez une table nommée
Booksavecid,title,yearetpagesdes colonnes.DROP TABLE IF EXISTS dbo.Books; CREATE TABLE dbo.Books ( id int NOT NULL PRIMARY KEY, title nvarchar(1000) NOT NULL, [year] int null, [pages] int null ) GOCréez une autre table nommée
Chaptersavecid,nameetpagesdes colonnes. Créez unebook_idcolonne avec une relation de clé étrangère à laidcolonne de laBookstable.DROP TABLE IF EXISTS dbo.Chapters; CREATE TABLE dbo.Chapters ( id int NOT NULL PRIMARY KEY, [name] nvarchar(1000) NOT NULL, [pages] int null, book_id int NOT NULL, FOREIGN KEY (book_id) REFERENCES dbo.Books(id) ) GOVérifiez que vos tables sont créées avec certaines requêtes SQL courantes.
SELECT * FROM dbo.BooksSELECT * FROM dbo.ChaptersRemarque
À ce stade, les requêtes ne doivent pas retourner de données.
Fichier de configuration de build
À présent, utilisez l’interface CLI DAB pour créer un fichier de configuration, des entités et des relations d’entité.
Ouvrez un terminal.
Stockez votre chaîne de connexion de base de données SQL sous la forme d’une variable shell nommée
SQL_CONNECTION_STRING.SQL_CONNECTION_STRING="<your-sql-connection-string>"$SQL_CONNECTION_STRING="<your-sql-connection-string>"Exécutez
dab initen spécifiant les propriétés suivantes.Valeur database-typemssqlgraphql.multiple-create.enabledtruehost-modedevelopmentconnection-stringUtilisez la SQL_CONNECTION_STRINGvariable shell créée à l’étape précédente.dab init --database-type "mssql" --graphql.multiple-create.enabled true --host-mode "development" --connection-string $SQL_CONNECTION_STRINGExécutez
dab addpour ajouter une entité Book spécifiant les propriétés suivantes.Valeur sourcedbo.Bookspermissionsanonymous:*dab add Book --source "dbo.Books" --permissions "anonymous:*"Réexécutez
dab addpour ajouter une entité Chapter en spécifiant maintenant les propriétés suivantes.Valeur sourcedbo.Chapterspermissionsanonymous:*dab add Chapter --source "dbo.Chapters" --permissions "anonymous:*"Exécutez
dab updatepour créer la relation Book to Chapter spécifiant les propriétés suivantes.Valeur relationshipchapterscardinalitymanydab update Book --relationship chapters --target.entity Chapter --cardinality manyEnfin, exécutez
dab updateune dernière fois pour créer la relation Chapitre à Livre en spécifiant les propriétés suivantes.Valeur relationshipbookcardinalityonedab update Chapter --relationship book --target.entity Book --cardinality one
Exécuter plusieurs mutations de création
Pour conclure, utilisez la CLI DAB pour exécuter l'API et tester le point de terminaison GraphQL avec Banana Cake Pop.
Démarrez le moteur d’exécution à l’aide de la configuration actuelle.
dab startAccédez au
/graphqlpoint de terminaison relatif de votre application en cours d’exécution. Ce point de terminaison ouvre l’interface Banana Cake Pop.Remarque
Par défaut, ce serait
https://localhost:5001/graphql.Créez une mutation GraphQL pour créer trois lignes distinctes sur deux tables de votre base de données. Cette mutation utilise à la fois les entités
BooketChapterdans une seule opération de « création multiple ». Utilisez les propriétés suivantes pour la mutation.Type d’entité ID Nom Feuilles Année Livre 1 Présentation du générateur d’API de données 200 2024 Chapitre 2 Fichiers de configuration 150 Chapitre 3 Course à pied 50 mutation { createBook( item: { id: 1 title: "Introduction to Data API builder" pages: 200 year: 2024 chapters: [ { id: 2 name: "Configuration files", pages: 150 } { id: 3 name: "Running", pages: 50 } ] } ) { id title pages year chapters { items { name pages } } } }Observez le résultat de la mutation. La mutation a créé des données associées pour les deux types d’entités.
{ "data": { "createBook": { "id": 1, "title": "Introduction to Data API builder", "pages": 200, "year": 2024, "chapters": { "items": [ { "name": "Configuration files", "pages": 150 }, { "name": "Running", "pages": 50 } ] } } } }Utilisez une requête GraphQL pour récupérer tous les livres de votre base de données, y compris leurs chapitres connexes.
query { books { items { pages title year chapters { items { name pages } } } } }Remarque
À ce stade, la requête doit retourner un seul livre avec deux chapitres.
Observez la sortie de cette requête avec un tableau de livres, y compris leur tableau imbriqué de chapitres.
{ "data": { "books": { "items": [ { "pages": 200, "title": "Introduction to Data API builder", "year": 2024, "chapters": { "items": [ { "name": "Configuration files", "pages": 150 }, { "name": "Running", "pages": 50 } ] } } ] } } }Connectez-vous à nouveau à la base de données SQL à l’aide de votre client ou outil préféré.
Vérifiez que vos données ont été correctement créées à l’aide d’une requête SQL.
SELECT c.name AS chapterName, c.pages AS chapterPages, b.title AS bookName, b.year AS releaseYear FROM dbo.Chapters c LEFT JOIN dbo.Books b ON b.id = c.book_idRemarque
Cette requête doit retourner deux enregistrements de chapitre.