Partilhar via


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

Create dados e tabelas SQL

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

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

  2. Create uma tabela com id o nome Books e name 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
    
  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 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.

  1. Create um ficheiro de configuração típico com dab init.

    dab init --database-type "mssql" --host-mode "Development"
    
  2. Adicionar uma entidade do Livro com dab add.

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

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

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

  1. Crie um ficheiro dab-config.Development.json. Adicione o seguinte conteúdo para utilizar a @env() função para definir o 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. Guarde as suas alterações no .env, dab-config.json e dab-config. Development.json ficheiros.

Configuração do teste

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

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

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

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

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