Usare ambienti di file di configurazione con Generatore API dati
Questa guida illustra i passaggi per indirizzare un ambiente di sviluppo usando un file di configurazione. I file di configurazione dei risultati finali devono essere sufficientemente flessibili che una configurazione del database di produzione può essere aggiunta in futuro con modifiche minime.
Prerequisiti
- Database SQL esistente.
- Un client di gestione dei dati
- Se non è installato un client, installare Azure Data Studio
- Interfaccia della riga di comando del generatore di API dati. Installare l'interfaccia della riga di comando
Create tabella e dati SQL
Create una tabella con dati fittizi da usare in questo scenario di esempio.
Connettersi al server SQL e al database usando il client o lo strumento preferito. Gli esempi includono, ma non sono limitati a: SQL Server Management Studio, Azure Data Studio e l'estensione SQL Server per Visual Studio Code.
Create una tabella denominata
Books
conid
ename
colonne.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 ); GO
Inserire quattro righe del libro di esempio nella
Books
tabella.INSERT INTO dbo.Books VALUES (1000, 'Practical Azure SQL Database for Modern Developers', 2020, 326), (1001, 'SQL Server 2019 Revealed: Including Big Data Clusters and Machine Learning', 2019, 444), (1002, 'Azure SQL Revealed: A Guide to the Cloud for SQL Server Professionals', 2020, 528), (1003, 'SQL Server 2022 Revealed: A Hybrid Data Platform Powered by Security, Performance, and Availability', 2022, 506) GO
Testare i dati con una
SELECT *
semplice query.SELECT * FROM dbo.Books
Create file di configurazione di base
Create un file di configurazione di base usando l'interfaccia della riga di comando DIB.
Create un file di configurazione tipico usando
dab init
.dab init --database-type "mssql" --host-mode "Development"
Aggiungere un'entità Book usando
dab add
.dab add Book --source "dbo.Books" --permissions "anonymous:*"
Osservare il file di configurazione corrente dab-config.json . Il file deve includere un'implementazione di base dell'API con una singola entità, un endpoint DELL'API REST e un endpoint GraphQL.
{ "$schema": "https://github.com/Azure/data-api-builder/releases/download/v0.10.23/dab.draft.schema.json", "data-source": { "database-type": "mssql", "connection-string": "", "options": { "set-session-context": false } }, "runtime": { "rest": { "enabled": true, "path": "/api", "request-body-strict": true }, "graphql": { "enabled": true, "path": "/graphql", "allow-introspection": true }, "host": { "cors": { "origins": [], "allow-credentials": false }, "authentication": { "provider": "StaticWebApps" }, "mode": "development" } }, "entities": { "Book": { "source": { "object": "dbo.Books", "type": "table" }, "graphql": { "enabled": true, "type": { "singular": "Book", "plural": "Books" } }, "rest": { "enabled": true }, "permissions": [ { "role": "anonymous", "actions": [ { "action": "*" } ] } ] } } }
file di variabili di ambiente Create
Aggiungere ora un file di ambiente per archiviare le variabili di ambiente per DAB.
- Create un file denominato
.env
nella stessa directory dei file di configurazione dell'interfaccia della riga di comando daB.
Nota
Il .env
nome del file, ad esempio .gitignore
e .editorconfig
i file non hanno alcun nome file, solo un'estensione di file. Il nome è senza distinzione tra maiuscole e minuscole, ma la convenzione è minuscola.
Aggiungere una
DAB_ENVIRONMENT
variabile di ambiente con un valore diDevelopment
. Aggiungere anche unaSQL_DOCKER_CONNECTION_STRING
variabile di ambiente con il database stringa di connessione.SQL_DOCKER_CONNECTION_STRING=<connection-string> DAB_ENVIRONMENT=Development
Create file di configurazione dell'ambiente
Aggiungere infine un file di configurazione di sviluppo con il delta tra la configurazione corrente e la configurazione dell'ambiente desiderata.
Creare un file
dab-config.Development.json
. Aggiungere il contenuto seguente per usare la funzione per impostare il@env()
connection-string
valore nell'ambiente di sviluppo.{ "$schema": "<https://github.com/Azure/data-api-builder/releases/latest/download/dab.draft.schema.json>", "data-source": { "database-type": "mssql", "connection-string": "@env('SQL_DOCKER_CONNECTION_STRING')" } }
Salvare le modifiche apportate a .env, dab-config.json e dab-config. Development.json file.
Impostazione del test
Usare
dab start
per convalidare l'avvio dello strumento come previsto.dab start
L'output dello strumento deve includere l'indirizzo da usare per passare all'API in esecuzione.
Successfully completed runtime initialization. info: Microsoft.Hosting.Lifetime[14] Now listening on: <http://localhost:5000> info: Microsoft.Hosting.Lifetime[0]
Suggerimento
In questo esempio l'applicazione è in esecuzione
localhost
sulla porta 5000. L'applicazione in esecuzione potrebbe avere un indirizzo e una porta diversi.Provare prima di tutto l'API eseguendo manualmente una richiesta GET a
/api/Book
.Suggerimento
In questo esempio l'URL sarà
https://localhost:5000/api/Book
. È possibile passare a questo URL usando il Web browser.Passare quindi alla pagina della documentazione di Swagger in
/swagger
.Suggerimento
In questo esempio l'URL sarà
<https://localhost:5000/swagger
. Di nuovo, è possibile passare a questo URL usando il Web browser.Infine, provare l'endpoint GraphQL passando a
/graphql
ed eseguendo questa operazione.query { books(filter: { pages: { lt: 500 } }) { items { id title year pages } } }
Suggerimento
In questo esempio l'URL sarà
https://localhost:5000/graphql
. Di nuovo, è possibile passare a questo URL usando il Web browser.