Compartilhar via


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

Create tabela e dados SQL

Create uma tabela com dados fictícios a serem usados neste cenário de exemplo.

  1. 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.

  2. Create uma tabela chamada Books com id colunas e name .

    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
    
  3. 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
    
  4. 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.

  1. Create um arquivo de configuração típico usando dab init.

    dab init --database-type "mssql" --host-mode "Development"
    
  2. Adicione uma entidade Book usando dab add.

    dab add Book --source "dbo.Books" --permissions "anonymous:*"
    
  3. 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.

  1. 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.

  1. Adicione uma DAB_ENVIRONMENT variável de ambiente com um valor de Development. Além disso, adicione uma SQL_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.

  1. Crie um arquivo do dab-config.Development.json . Adicione o conteúdo a seguir para usar a @env() função para definir seu connection-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')"
      }
    }
    
  2. Salve suas alterações no .env, dab-config.json e dab-config. Development.json arquivos.

Configuração de teste

  1. Use dab start para validar o início da ferramenta conforme o esperado.

    dab start
    
  2. 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.

  3. 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.

  4. 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.

  5. 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.