Condividi tramite


API Fabric per l'editor GraphQL

L'API Fabric per GraphQL fornisce un ambiente di sviluppo GraphQL grafico all'interno del browser, che offre un playground interattivo per comporre, testare e visualizzare in tempo reale i risultati delle query e delle mutazioni GraphQL.

Utenti che usano l'editor GraphQL

L'editor GraphQL è essenziale per:

  • Creazione di prototipi di applicazioni e test di query sui dati di Fabric prima di implementarle nelle applicazioni
  • Ingegneri dei dati che esplorano le strutture dei dati lakehouse e warehouse e convalidano i progetti di schema GraphQL.
  • I collaboratori dell'area di lavoro Fabric testano le autorizzazioni di accesso ai dati e svolgono attività di risoluzione dei problemi di query
  • Sviluppatori di business intelligence che apprendeno la struttura dell'API e creano modelli di accesso ai dati per applicazioni personalizzate
  • Team di sviluppo che collaborano allo sviluppo di query e alla risoluzione dei problemi di accesso ai dati all'interno delle aree di lavoro di Fabric

Usare l'editor ogni volta che è necessario sviluppare, testare o risolvere problemi di query GraphQL in modo interattivo contro le origini dati di Fabric.

Introduzione all'editor GraphQL

Per iniziare a usare l'editor GraphQL, seguire questa procedura:

  1. Aprire l'elemento API GraphQL : passare all'area di lavoro in Infrastruttura e aprire l'API per l'elemento GraphQL.

  2. Accedere all'editor : selezionare Query nell'angolo in basso a sinistra della schermata del portale.

    Screenshot che mostra dove viene visualizzata l'opzione Query nell'angolo inferiore sinistro della schermata Fabric.

  3. Scrivere la query : digitare le query GraphQL direttamente nella scheda Query . Usare IntelliSense con i tasti di scelta rapida:

    • Windows: CTRL+ SPAZIO
    • macOS: comando + spazio

    Screenshot della schermata dell'editor dell'API, che mostra una scheda Query suddivisa nei riquadri Esegui, Variabili della query e Risultati.

  4. Eseguire la query : selezionare Esegui per eseguire la query e recuperare i dati dall'origine dati.

Genera codice

L'editor API genera automaticamente codice boilerplate in Python o Node.js che rispecchia la query o mutazione GraphQL che stai attualmente testando nell'editor. Durante il prototipo e l'affinamento delle query, il codice generato viene aggiornato di conseguenza. Dopo aver soddisfatto i risultati, è possibile visualizzare e copiare il codice generato per l'esecuzione in locale a scopo di test o riutilizzarlo nel processo di sviluppo dell'applicazione.

Important

Il codice generato usa credenziali interattive del browser e deve essere usato solo a scopo di test. Nell'ambiente di produzione, bisogna registrare sempre un'applicazione in Microsoft Entra e usare gli ambiti appropriati e client_id. È possibile trovare un esempio end-to-end con codice di esempio in Connect Applications (Connetti applicazioni).

Per iniziare:

  1. Scrivere una query : immettere la query di esempio seguente (o personalizzata) nell'editor di query:

    query {
      addresses(first: 5) {
         items {
            AddressID
            City
            StateProvince
            CountryRegion
         }  
      }
    }
    
  2. Eseguire la query : selezionare Esegui per eseguire la query e verificare che funzioni correttamente nell'editor prima di procedere.

  3. Genera codice : selezionare il pulsante Genera codice e quindi selezionare il linguaggio di programmazione preferito (Python o JavaScript/Node.JS):

    Screenshot della schermata dell'editor api che mostra l'elenco a discesa per selezionare il linguaggio di programmazione per il codice generato.

  4. È quindi possibile copiare il codice generato e salvarlo come file in una cartella locale. A seconda della lingua scelta, seguire questa procedura rapida per testare localmente:

Python

  1. Creare un file denominato editor.py e incollare il codice generato dalla query di esempio precedente.

  2. Creare un ambiente virtuale eseguendo il comando python -m venv .venv.

  3. Attivare venv eseguendo .venv\Scripts\activate o source .venv/bin/activate.

  4. Installare la dipendenza richiesta eseguendo pip install azure-identity.

  5. Eseguire il codice con python editor.py.

  6. Viene richiesto di accedere tramite una finestra del browser per autenticare la richiesta.

  7. La risposta dell'API viene stampata nella 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. Creare un file denominato editor.js e incollare il codice generato dalla query di esempio precedente.

  2. Nella stessa cartella di editor.jscreare un package.json file con il contenuto seguente:

    {
      "type": "module",
      "dependencies": {}
    }
    
  3. Installare Node.js nel computer di sviluppo (include npm)

  4. Eseguire npm install @azure/identity o un comando simile nella gestione pacchetti scelto per installare la versione più recente della libreria di identità.

  5. Eseguire node editor.js per eseguire il codice.

  6. Viene richiesto di accedere tramite una finestra del browser per autenticare la richiesta.

  7. La risposta dell'API viene stampata nella 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"
    				}
    			]
    		}
    	}
    }
    

Sviluppo di query e mutazioni

Gli esempi seguenti illustrano la sintassi delle query e delle mutazioni di GraphQL utilizzando i dati di esempio AdventureWorks. Questi esempi presuppongono che si stia lavorando con un data warehouse di Fabric che supporta operazioni di scrittura (mutazioni). Le origini dati a cui si accede tramite endpoint di analisi SQL (ad esempio lakehouse e database con mirroring) sono di sola lettura e supportano solo query, non mutazioni.

Esaminare questo breve estratto dello schema GraphQL da AdventureWorks. Definisce un Product tipo con query per leggere un singolo prodotto o elencare tutti i prodotti e le mutazioni per creare, aggiornare o eliminare prodotti, supportando tutti i casi d'uso CRUDL (creazione, lettura, aggiornamento, eliminazione, elenco).

{
  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
  }
}

Leggere i dati esposti tramite GraphQL usando qualsiasi query definita nello schema. La products_by_pk query recupera un singolo prodotto in base alla chiave primaria:

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

Response:

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

Usare mutazioni come createProduct per scrivere dati e creare un nuovo prodotto con i parametri richiesti.

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
  }
}

Response:

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

Variabili di query

Usare il riquadro Variabili di query sul lato destro della scheda Query per passare parametri come variabili alle query o alle mutazioni. Le variabili funzionano come variabili in altri linguaggi di programmazione. Ogni variabile viene dichiarata con un nome usato per accedere al valore archiviato. Usando l'esempio precedente di mutazione, è possibile modificarlo leggermente per usare le variabili di query.

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

Definire le variabili nel riquadro Variabili di query usando l'esempio seguente.

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

Le variabili rendono il codice di mutazione più pulito, più facile da leggere, testare e modificare. Semplificano anche il riutilizzo della stessa mutazione con valori diversi modificando semplicemente le variabili.