Usar ambientes de arquivo de configuração com o construtor de API de Dados
Este guia percorre as etapas para direcionar um ambiente de desenvolvimento usando um arquivo de configuração. Os arquivos de configuração de resultado final devem ser flexíveis o suficiente para que uma configuração de banco de dados de produção possa ser adicionada no futuro com alterações mínimas.
Pré-requisitos
- Banco de dados SQL existente.
- Um cliente de gerenciamento de dados
- Se você não tiver um cliente instalado, instale o Azure Data Studio
- CLI do construtor de API de Dados. Instalar a CLI
Create tabela e dados SQL
Create uma tabela com dados fictícios a serem usados neste cenário de exemplo.
Conecte-se ao SQL Server e ao banco de dados usando seu cliente ou ferramenta preferencial. Os exemplos incluem, mas não se limitam a: SQL Server Management Studio, Azure Data Studio e a extensão SQL Server para Visual Studio Code.
Create uma tabela chamada
Books
comid
colunas ename
.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
Insira quatro linhas de livro de exemplo na
Books
tabela.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
Teste seus dados com uma consulta simples
SELECT *
.SELECT * FROM dbo.Books
Create arquivo de configuração base
Create um arquivo de configuração de linha de base usando a CLI do DAB.
Create um arquivo de configuração típico usando
dab init
.dab init --database-type "mssql" --host-mode "Development"
Adicione uma entidade Book usando
dab add
.dab add Book --source "dbo.Books" --permissions "anonymous:*"
Observe o arquivo de configuração dab-config.json atual. O arquivo deve incluir uma implementação de linha de base da API com uma única entidade, um ponto de extremidade da API REST e um ponto de extremidade 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 arquivo de variáveis de ambiente
Agora, adicione um arquivo de ambiente para armazenar variáveis de ambiente para DAB.
- Create um arquivo chamado
.env
no mesmo diretório que os arquivos de configuração da CLI do DAB.
Observação
O .env
nome do arquivo, como .gitignore
e .editorconfig
arquivos, não tem nome de arquivo, apenas uma extensão de arquivo. O nome não diferencia maiúsculas de minúsculas, mas a convenção é minúscula.
Adicione uma
DAB_ENVIRONMENT
variável de ambiente com um valor deDevelopment
. Além disso, adicione umaSQL_DOCKER_CONNECTION_STRING
variável de ambiente com seu banco de dados cadeia de conexão.SQL_DOCKER_CONNECTION_STRING=<connection-string> DAB_ENVIRONMENT=Development
Create arquivo de configuração de ambiente
Por fim, adicione um arquivo de configuração de desenvolvimento com o delta entre a configuração atual e a configuração de ambiente desejada.
Crie um arquivo do
dab-config.Development.json
. Adicione o conteúdo a seguir para usar a@env()
função para definir seuconnection-string
valor no ambiente de desenvolvimento.{ "$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')" } }
Salve suas alterações no .env, dab-config.json e dab-config. Development.json arquivos.
Configuração de teste
Use
dab start
para validar o início da ferramenta conforme o esperado.dab start
A saída da ferramenta deve incluir o endereço a ser usado para navegar até a API em execução.
Successfully completed runtime initialization. info: Microsoft.Hosting.Lifetime[14] Now listening on: <http://localhost:5000> info: Microsoft.Hosting.Lifetime[0]
Dica
Neste exemplo, o aplicativo está em execução na
localhost
porta 5000. Seu aplicativo em execução pode ter um endereço e uma porta diferentes.Primeiro, tente a API manualmente emitindo uma solicitação GET para
/api/Book
.Dica
Neste exemplo, a URL seria
https://localhost:5000/api/Book
. Você pode navegar até essa URL usando seu navegador da Web.Em seguida, navegue até a página de documentação do Swagger em
/swagger
.Dica
Neste exemplo, a URL seria
<https://localhost:5000/swagger
. Novamente, você pode navegar para essa URL usando seu navegador da Web.Por fim, tente o ponto de extremidade GraphQL navegando até
/graphql
e executando essa operação.query { books(filter: { pages: { lt: 500 } }) { items { id title year pages } } }
Dica
Neste exemplo, a URL seria
https://localhost:5000/graphql
. Novamente, você pode navegar para essa URL usando seu navegador da Web.