Partager via


Éditeur d’API Fabric pour GraphQL

L’API Fabric pour GraphQL fournit un environnement de développement GraphQL graphique dans le navigateur, qui permet à un terrain de jeu interactif de composer, tester et voir les résultats en live de vos requêtes et mutations GraphQL.

Qui utilise l’éditeur GraphQL

L’éditeur GraphQL est essentiel pour :

  • Développeurs d’applications prototypage et test de requêtes sur des données Fabric avant de les implémenter dans des applications
  • Ingénieurs de données explorant des structures de données de type lakehouse et entrepôt et validant les schémas GraphQL
  • Contributeurs d’espace de travail Fabric qui testent les autorisations d’accès aux données et résolvent les problèmes de requête
  • Développeurs décisionnels apprenant la structure d’API et créant des modèles d’accès aux données pour les applications personnalisées
  • Équipes de développement qui collaborent sur le développement des requêtes et résolvent les problèmes d’accès aux données dans les espaces de travail Fabric

Utilisez l’éditeur chaque fois que vous devez développer, tester ou déboguer des requêtes GraphQL de manière interactive sur vos sources de données Fabric.

Bien démarrer avec l’éditeur GraphQL

Pour commencer à utiliser l’éditeur GraphQL, procédez comme suit :

  1. Ouvrez l’élément d’API GraphQL : accédez à votre espace de travail dans Fabric et ouvrez l’API pour l’élément GraphQL.

  2. Accédez à l’éditeur : sélectionnez Requête dans le coin inférieur gauche de l’écran de votre portail.

    Capture d’écran montrant où l’option Requête s’affiche dans le coin inférieur gauche de l’écran Fabric.

  3. Écrivez votre requête : tapez vos requêtes GraphQL directement sous l’onglet Requête . Utilisez IntelliSense avec les raccourcis clavier :

    • Windows : Ctrl + Espace
    • macOS : Commande + Espace

    Capture d’écran de l’éditeur d’API, qui montre un onglet Requête divisé en volets Exécuter, Variables de requête et Résultats.

  4. Exécutez la requête : sélectionnez Exécuter pour exécuter la requête et récupérer des données à partir de votre source de données.

Générer le code

L’éditeur d’API génère automatiquement du code Python ou Node.js réutilisable qui reflète la requête GraphQL ou la mutation que vous testez actuellement dans l’éditeur. Lorsque vous prototypez et affinez vos requêtes, le code généré est mis à jour en conséquence. Une fois que vous êtes satisfait des résultats, vous pouvez afficher et copier le code généré pour qu’il s’exécute localement à des fins de test ou le réutiliser dans votre processus de développement d’application.

Important

Le code généré utilise des informations d’identification de navigateur interactives et doit être utilisé uniquement à des fins de test. En production, inscrivez toujours une application dans Microsoft Entra et utilisez le client_id et les étendues appropriés. Vous trouverez un exemple de bout en bout avec un exemple de code sur Connect Applications.

Pour commencer :

  1. Écrivez une requête : entrez l’exemple de requête suivant (ou votre propre) dans l’éditeur de requête :

    query {
      addresses(first: 5) {
         items {
            AddressID
            City
            StateProvince
            CountryRegion
         }  
      }
    }
    
  2. Exécutez la requête : sélectionnez Exécuter pour exécuter la requête et vérifiez qu’elle fonctionne correctement dans l’éditeur avant de continuer.

  3. Générer du code : sélectionnez le bouton Générer du code , puis sélectionnez votre langage de programmation préféré (Python ou JavaScript/Node.JS) :

    Capture d’écran de l’éditeur d’API montrant la liste déroulante pour sélectionner le langage de programmation pour le code généré.

  4. Vous pouvez ensuite copier le code généré et l’enregistrer sous forme de fichier dans un dossier local. Selon la langue choisie, suivez ces étapes rapides pour tester localement :

Python

  1. Créez un fichier nommé editor.py et collez le code généré à partir de l’exemple de requête ci-dessus.

  2. Créez un environnement virtuel en exécutant la commande python -m venv .venv.

  3. Activez l’activation en venv exécutant .venv\Scripts\activate ou source .venv/bin/activate.

  4. Installez la dépendance requise en exécutant pip install azure-identity.

  5. Exécutez le code avec python editor.py.

  6. Vous êtes invité à vous connecter via une fenêtre de navigateur pour authentifier la demande.

  7. La réponse de l’API est imprimée dans la console.

    {
    	"data": {
    		"addresses": {
    			"items": [
    				{
    					"AddressID": 9,
    					"City": "Bothell",
    					"StateProvince": "Washington",
    					"CountryRegion": "United States"
    				},
    				{
    					"AddressID": 11,
    					"City": "Bothell",
    					"StateProvince": "Washington",
    					"CountryRegion": "United States"
    				},
    				{
    					"AddressID": 25,
    					"City": "Dallas",
    					"StateProvince": "Texas",
    					"CountryRegion": "United States"
    				},
    				{
    					"AddressID": 28,
    					"City": "Phoenix",
    					"StateProvince": "Arizona",
    					"CountryRegion": "United States"
    				},
    				{
    					"AddressID": 32,
    					"City": "Montreal",
    					"StateProvince": "Quebec",
    					"CountryRegion": "Canada"
    				}
    			]
    		}
    	}
    }
    

Node.JS

  1. Créez un fichier nommé editor.js et collez le code généré à partir de l’exemple de requête ci-dessus.

  2. Dans le même dossier que editor.js, créez un package.json fichier avec le contenu suivant :

    {
      "type": "module",
      "dependencies": {}
    }
    
  3. Installer Node.js sur votre ordinateur de développement (inclut npm)

  4. Exécutez ou exécutez npm install @azure/identity une commande similaire dans le gestionnaire de package choisi pour installer la dernière version de la bibliothèque d’identités.

  5. Exécutez node editor.js pour exécuter le code.

  6. Vous êtes invité à vous connecter via une fenêtre de navigateur pour authentifier la demande.

  7. La réponse de l’API est imprimée dans la console.

    {
    	"data": {
    		"addresses": {
    			"items": [
    				{
    					"AddressID": 9,
    					"City": "Bothell",
    					"StateProvince": "Washington",
    					"CountryRegion": "United States"
    				},
    				{
    					"AddressID": 11,
    					"City": "Bothell",
    					"StateProvince": "Washington",
    					"CountryRegion": "United States"
    				},
    				{
    					"AddressID": 25,
    					"City": "Dallas",
    					"StateProvince": "Texas",
    					"CountryRegion": "United States"
    				},
    				{
    					"AddressID": 28,
    					"City": "Phoenix",
    					"StateProvince": "Arizona",
    					"CountryRegion": "United States"
    				},
    				{
    					"AddressID": 32,
    					"City": "Montreal",
    					"StateProvince": "Quebec",
    					"CountryRegion": "Canada"
    				}
    			]
    		}
    	}
    }
    

Développement de requêtes et mutations

Les exemples suivants illustrent la syntaxe de requête et de mutation GraphQL à l’aide des exemples de données AdventureWorks. Ces exemples supposent que vous utilisez un entrepôt de données Fabric qui prend en charge les opérations d’écriture (mutations). Les sources de données accessibles via des points de terminaison SQL Analytics (comme Lakehouses et des bases de données mises en miroir) sont en lecture seule et prennent uniquement en charge les requêtes, et non les mutations.

Passez en revue cet extrait de schéma GraphQL court d’AdventureWorks. Il définit un Product type avec des requêtes pour lire un seul produit ou lister tous les produits et mutations pour créer, mettre à jour ou supprimer des produits, prenant en charge tous les cas d’usage CRUDL (créer, lire, mettre à jour, supprimer, liste).

{
  type Product {
    ProductID: Int!
    Name: String!
    ProductNumber: String!
    Color: String
    ListPrice: Float!
    SellStartDate: DateTime!
  }

  type Query {
    products(first: Int, filter: ProductFilterInput): ProductConnection
    products_by_pk(ProductID: Int!): Product
  }

  type Mutation {
    createProduct(Name: String!, ProductNumber: String!, ListPrice: Float!, SellStartDate: DateTime!): Product
    updateProduct(ProductID: Int!, Name: String, Color: String, ListPrice: Float): Product
    deleteProduct(ProductID: Int!): Boolean
  }
}

Lisez les données exposées via GraphQL à l’aide d’une requête définie dans le schéma. La products_by_pk requête récupère un seul produit par sa clé primaire :

query MyQuery {
  products_by_pk(ProductID: 680) {
    ProductID
    Name
    ProductNumber
    Color
    ListPrice
  }
}

Réponse :

{
  "data": {
    "products_by_pk": {
      "ProductID": 680,
      "Name": "HL Road Frame - Black, 58",
      "ProductNumber": "FR-R92B-58",
      "Color": "Black",
      "ListPrice": 1431.50
    }
  }
}

Utilisez des mutations comme createProduct pour écrire des données et créer un nouveau produit avec les paramètres requis.

mutation MyMutation {
  createProduct(
    Name: "Mountain Bike Helmet - Blue", 
    ProductNumber: "HE-M897-B", 
    ListPrice: 89.99,
    SellStartDate: "2025-01-01T00:00:00Z"
  ) {
    ProductID
    Name
    ProductNumber
    ListPrice
  }
}

Réponse :

{
  "data": {
    "createProduct": {
      "ProductID": 1001,
      "Name": "Mountain Bike Helmet - Blue",
      "ProductNumber": "HE-M897-B",
      "ListPrice": 89.99
    }
  }
}

Variables de requête

Utilisez le volet Variables de requête sur le côté droit de l’onglet Requête pour transmettre des paramètres en tant que variables à vos requêtes ou mutations. Les variables fonctionnent comme des variables dans d’autres langages de programmation. Chaque variable est déclarée avec un nom utilisé pour accéder à la valeur stockée dans celle-ci. À l’aide de l’exemple de mutation précédent, vous le modifiez légèrement pour utiliser des variables de requête.

mutation MyMutation ($name: String!, $productNumber: String!, $listPrice: Float!, $sellStartDate: DateTime!){
  createProduct(
    Name: $name, 
    ProductNumber: $productNumber, 
    ListPrice: $listPrice,
    SellStartDate: $sellStartDate
  ) {
    ProductID
    Name
    ProductNumber
    ListPrice
  }
}

Définissez des variables dans le volet Variables de requête à l’aide de l’exemple suivant.

{
  "name": "Mountain Bike Helmet - Blue",
  "productNumber": "HE-M897-B",
  "listPrice": 89.99,
  "sellStartDate": "2025-01-01T00:00:00Z"
}

Les variables rendent le code de mutation plus propre, plus facile à lire, tester et modifier. Ils facilitent également la réutilisation de la même mutation avec des valeurs différentes en modifiant simplement les variables.