Uso de entornos de archivos de configuración con Data API Builder
En esta guía se describen los pasos para tener como destino un entorno de desarrollo mediante un archivo de configuración. Los archivos de configuración del resultado final deben ser lo suficientemente flexibles como para que se pueda agregar una configuración de base de datos de producción en el futuro con cambios mínimos.
Requisitos previos
- Base de datos SQL existente.
- Un cliente de administración de datos
- Si no tiene instalado un cliente, instale Azure Data Studio.
- CLI de Data API Builder. Instalación de la CLI de Azure
Create tabla y datos de SQL
Create una tabla con datos ficticios que se usarán en este escenario de ejemplo.
Conéctese a SQL Server y a la base de datos mediante su cliente o herramienta preferidos. Entre los ejemplos se incluyen, entre otros: SQL Server Management Studio, Azure Data Studio y la extensión SQL Server para Visual Studio Code.
Create una tabla denominada
Books
conid
las columnas yname
.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
Inserte cuatro filas de libro de ejemplo en la
Books
tabla.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
Pruebe los datos con una consulta simple
SELECT *
.SELECT * FROM dbo.Books
Create archivo de configuración base
Create un archivo de configuración de línea base mediante la CLI de DAB.
Create un archivo de configuración típico mediante
dab init
.dab init --database-type "mssql" --host-mode "Development"
Agregue una entidad Book mediante
dab add
.dab add Book --source "dbo.Books" --permissions "anonymous:*"
Observe el archivo de configuración de dab-config.json actual. El archivo debe incluir una implementación de línea base de la API con una sola entidad, un punto de conexión de la API REST y un punto de conexión de 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": "*" } ] } ] } } }
Create archivo de variables de entorno
Ahora, agregue un archivo de entorno para almacenar variables de entorno para DAB.
- Create un archivo denominado
.env
en el mismo directorio que los archivos de configuración de la CLI de DAB.
Nota
El .env
nombre de archivo, como .gitignore
y .editorconfig
los archivos, no tiene nombre de archivo, solo una extensión de archivo. El nombre no distingue mayúsculas de minúsculas, pero la convención es minúscula.
Agregue una
DAB_ENVIRONMENT
variable de entorno con un valor deDevelopment
. Además, agregue unaSQL_DOCKER_CONNECTION_STRING
variable de entorno con la base de datos cadena de conexión.SQL_DOCKER_CONNECTION_STRING=<connection-string> DAB_ENVIRONMENT=Development
archivo de configuración del entorno de Create
Por último, agregue un archivo de configuración de desarrollo con la diferencia entre la configuración actual y la configuración de entorno deseada.
Cree un archivo
dab-config.Development.json
. Agregue el siguiente contenido para usar la@env()
función para establecer elconnection-string
valor en el entorno de desarrollo.{ "$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')" } }
Guarde los cambios en .env, dab-config.json y dab-config. Development.json archivos.
Prueba de configuración
Use
dab start
para validar que la herramienta se inicia según lo previsto.dab start
La salida de la herramienta debe incluir la dirección que se va a usar para ir a la API en ejecución.
Successfully completed runtime initialization. info: Microsoft.Hosting.Lifetime[14] Now listening on: <http://localhost:5000> info: Microsoft.Hosting.Lifetime[0]
Sugerencia
En este ejemplo, la aplicación se ejecuta en en
localhost
el puerto 5000. La aplicación en ejecución puede tener una dirección y un puerto diferentes.En primer lugar, pruebe la API manualmente mediante la emisión de una solicitud GET a
/api/Book
.Sugerencia
En este ejemplo, la dirección URL sería
https://localhost:5000/api/Book
. Puede navegar a esta dirección URL mediante el explorador web.A continuación, vaya a la página de documentación de Swagger en
/swagger
.Sugerencia
En este ejemplo, la dirección URL sería
<https://localhost:5000/swagger
. De nuevo, puede navegar a esta dirección URL mediante el explorador web.Por último, pruebe el punto de conexión de GraphQL; para ello, vaya a
/graphql
y ejecute esta operación.query { books(filter: { pages: { lt: 500 } }) { items { id title year pages } } }
Sugerencia
En este ejemplo, la dirección URL sería
https://localhost:5000/graphql
. De nuevo, puede navegar a esta dirección URL mediante el explorador web.