Compartilhar via


Conectando-se a um banco de dados com Aplicativos Web Estáticos do Azure (versão prévia)

O recurso de conexões de banco de dados do Aplicativos Web Estáticos do Azure permite que você acesse um banco de dados do seu aplicativo Web estático sem escrever código personalizado do lado do servidor.

Depois de criar uma conexão entre seu aplicativo Web e o banco de dados, você poderá manipular dados com suporte total para operações CRUD, autorização integrada e relacionamentos.

Com base no Data API Builder, o Aplicativos Web Estáticos do Azure recebe solicitações REST e GraphQL e as converte em consultas de banco de dados.

Os recursos suportados pelas conexões de banco de dados incluem:

Recurso Descrição
Segurança integrada Integração interna com autenticação de Aplicativos Web Estáticos do Azure e modelo de segurança de autorização. A mesma segurança baseada em função usada para proteger rotas está disponível para ponto de extremidade de API.
Operações completas baseadas em CRUD Consulte os tutoriais para Azure Cosmos DB, SQL do Azure, MySQL, ou PostgreSQL para obter um exemplo de como manipular dados em seu aplicativo.
Suporta SQL e NoSQL Você pode usar bancos de dados relacionais e de documentos como banco de dados do seu aplicativo.
Arquitetura sem servidor As conexões são dimensionadas de 0 a 1 trabalhador (durante a visualização).
Relacionamentos de banco de dados Compatível apenas por meio do ponto de extremidade GraphQL.
Suporte à CLI Desenvolva localmente com a CLI de Static Web Apps. Use a opção --data-api-location para lidar com solicitações para APIs de dados em desenvolvimento da mesma forma que são tratadas na nuvem.

Bancos de dados com suporte

A tabela a seguir mostra suporte para diferentes bancos de dados relacionais e NoSQL.

Nome Tipo Descrição REST GraphQL
Azure Cosmos DB Standard Plataforma de banco de dados distribuída globalmente para bancos de dados NoSQL e relacionais de qualquer escala.

Além da configuração padrão, um gql arquivo de esquema é necessário para ponto de extremidade GraphQL.
SQL do Azure Standard Família de produtos gerenciados, seguros e inteligentes que usam o mecanismo de banco de dados SQL Server na nuvem Azure.
Banco de Dados do Azure para MySQL Flex Serviço de banco de dados relacional na nuvem da Microsoft baseado no MySQL Community Edition
Banco de Dados do Azure para PostgreSQL Flex Banco de dados como serviço PostgreSQL totalmente gerenciado que lida com cargas de trabalho de missão crítica com desempenho previsível e escalabilidade dinâmica.
Banco de Dados do Azure para PostgreSQL (único) Único Banco de dados PostgreSQL totalmente gerenciado.

Você pode usar os seguintes tipos de conexão para acesso ao banco de dados:

  • Cadeia de conexão
  • Identidade gerenciada atribuída ao usuário
  • Identidade gerenciada atribuída pelo sistema

Local do ponto de extremidade

O acesso aos terminais de dados está disponível fora do caminho /data-api.

A tabela a seguir mostra como as solicitações são roteadas para diferentes partes de um aplicativo Web estático:

Caminho Descrição
example.com/api/* Funções de API
example.com/data-api/* Ponto de extremidade de conexões de banco de dados que suportam solicitações REST e GraphQL.
example.com/* Conteúdo estático

Ao configurar conexões de banco de dados em seu site, você pode configurar o sufixo REST ou GraphQL da rota /data-api/*. O prefixo /data-api é uma convenção de aplicativos Web estáticos e não pode ser alterado.

Configuração

Existem duas etapas para configurar uma conexões de banco de dados em aplicativos Web estáticos. Você precisa conectar seu banco de dados ao seu aplicativo Web estático no portal do Azure e atualizar o arquivo de configuração de conexões de banco de dados.

Consulte configuração de conexões de banco de dados nos Aplicativos Web Estáticos do Azure para obter mais detalhes.

Desenvolvimento local

A CLI dos Aplicativos Web Estáticos do Azure (SWA CLI) inclui suporte para trabalhar com conexões de banco de dados durante o desenvolvimento local.

A CLI ativa o ponto de extremidade /data-api local e faz proxy das solicitações da porta 4280 para a porta apropriada para acesso ao banco de dados.

Aqui está um exemplo de comando que inicia a CLI do SWA com uma conexões de banco de dados:

swa start ./src --data-api-location swa-db-connections

Esse comando inicia a CLI do SWA no diretório src. A opção --data-api-location informa à CLI que uma pasta chamada swa-db-connections contém o arquivo staticwebapp.database.config.json.

Observação

No desenvolvimento, se você usar uma cadeia de conexão para autenticar, use a função env() para ler uma cadeia de conexão de uma variável de ambiente. A cadeia de caracteres passada para a função env deve estar entre aspas.

Segurança baseada em função

Ao definir uma entidade no arquivo staticwebapp.database.config.json, você pode especificar uma lista de funções necessárias para acessar um terminal de entidade.

O fragmento configuração a seguir requer a função admin para acessar todas as ações (create, read, update, delete) na entidade ordens.

{
...
"entities": { 
  "Orders": { 
    "source": "dbo.Orders", 
    "permissions": [ 
      { 
        "actions": ["*"], 
        "role": "admin" 
      }
    ]
 }
}
...
}

Ao fazer chamadas para um ponto de extremidade que requer uma função, as seguintes condições são obrigatórias:

  1. O usuário atual deve ser autenticado.

  2. O usuário atual deve ser membro da função necessária.

  3. A solicitação REST ou GraphQL deve incluir um cabeçalho com a chave X-MS-API-ROLE e um valor do nome da função correspondente ao listado nas regras de configuração da entidade.

    Por exemplo, o trecho a seguir mostra como passar a função admin em um cabeçalho de solicitação.

    {
      method: "POST",
      headers: { 
        "Content-Type": "application/json",
        "X-MS-API-ROLE": "admin"
      },
      body: JSON.stringify(requestPayload)
    }
    

Restrições

  • Os bancos de dados devem ser acessíveis pela infraestrutura do Azure.
  • Durante a versão prévia pública, as conexões de banco de dados são dimensionadas de 0 a 1 trabalhador de banco de dados.

Próximas etapas