Utilizar ambientes de ficheiros de configuração com o Construtor de API de Dados
Este guia explica os passos para direcionar um ambiente de desenvolvimento através de um ficheiro de configuração. Os ficheiros de configuração de resultados finais devem ser suficientemente flexíveis para que uma configuração da base de dados de produção possa ser adicionada no futuro com alterações mínimas.
Pré-requisitos
- Base de dados SQL existente.
- Um cliente de gestão de dados
- Se não tiver um cliente instalado, instale o Azure Data Studio
- CLI do construtor de API de Dados. Instalar a CLI
Create dados e tabelas SQL
Create uma tabela com dados fictícios a utilizar neste cenário de exemplo.
Ligue-se ao SQL Server e à base de dados com o seu cliente ou ferramenta preferencial. Os exemplos incluem, mas não estão limitados a: SQL Server Management Studio, Azure Data Studio e a extensão SQL Server do Visual Studio Code.
Create uma tabela com
id
o nomeBooks
ename
colunas.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 os seus dados com uma consulta simples
SELECT *
.SELECT * FROM dbo.Books
Create ficheiro de configuração base
Create um ficheiro de configuração de linha de base com a CLI do DAB.
Create um ficheiro de configuração típico com
dab init
.dab init --database-type "mssql" --host-mode "Development"
Adicionar uma entidade do Livro com
dab add
.dab add Book --source "dbo.Books" --permissions "anonymous:*"
Observe o ficheiro de configuração de dab-config.json atual. O ficheiro deve incluir uma implementação de linha de base da sua API com uma única entidade, um ponto final da API REST e um ponto final do 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 ficheiro de variáveis de ambiente
Agora, adicione um ficheiro de ambiente para armazenar variáveis de ambiente para DAB.
- Create um ficheiro com
.env
o nome no mesmo diretório que os ficheiros de configuração da CLI do DAB.
Nota
O .env
nome do ficheiro, como .gitignore
e .editorconfig
os ficheiros não têm nome de ficheiro, apenas uma extensão de ficheiro. O nome não é sensível a maiúsculas e 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 a base de dados cadeia de ligação.SQL_DOCKER_CONNECTION_STRING=<connection-string> DAB_ENVIRONMENT=Development
Create ficheiro de configuração do ambiente
Por fim, adicione um ficheiro de configuração de desenvolvimento com o delta entre a configuração atual e a configuração do ambiente pretendido.
Crie um ficheiro
dab-config.Development.json
. Adicione o seguinte conteúdo para utilizar a@env()
função para definir o 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')" } }
Guarde as suas alterações no .env, dab-config.json e dab-config. Development.json ficheiros.
Configuração do teste
Utilize
dab start
para validar o início da ferramenta conforme esperado.dab start
O resultado da ferramenta deve incluir o endereço a utilizar para navegar para 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, a aplicação está em execução na
localhost
porta 5000. A sua aplicação em execução pode ter um endereço e uma porta diferentes.Primeiro, experimente a API manualmente ao emitir um pedido GET para
/api/Book
.Dica
Neste exemplo, o URL seria
https://localhost:5000/api/Book
. Pode navegar para este URL com o browser.Em seguida, navegue para a página de documentação do Swagger em
/swagger
.Dica
Neste exemplo, o URL seria
<https://localhost:5000/swagger
. Mais uma vez, pode navegar para este URL com o browser.Por fim, experimente o ponto final do GraphQL ao
/graphql
navegar e executar esta operação.query { books(filter: { pages: { lt: 500 } }) { items { id title year pages } } }
Dica
Neste exemplo, o URL seria
https://localhost:5000/graphql
. Mais uma vez, pode navegar para este URL com o browser.