Partilhar via


Ligar a uma base de dados com Azure Static Web Apps (pré-visualização)

Importante

Aviso de reforma: As Ligações à Base de Dados para Aplicações Web Estáticas terão o seu término em 30 de novembro de 2025. Migre agora para evitar interrupções.

A funcionalidade de ligação à base de dados Azure Static Web Apps permite-lhe aceder a uma base de dados a partir da sua aplicação web estática sem precisar de escrever código personalizado do lado do servidor.

Depois de criar uma ligação entre a sua aplicação web e a base de dados, pode manipular dados com suporte total para operações CRUD, autorização incorporada e relações.

Baseado no Data API builder, o Azure Static Web Apps recebe pedidos REST e GraphQL e converte-os em consultas de base de dados.

As funcionalidades suportadas pelas ligações à base de dados incluem:

Característica Description
Segurança integrada Integração integrada com o modelo de segurança de autenticação e autorização do Azure Static Web Apps. A mesma segurança baseada em papéis usada para proteger rotas está disponível para endpoints de API.
Operações completas baseadas em CRUD Consulte os tutoriais para Azure Cosmos DB,Azure SQL,MySQL ou PostgreSQL para um exemplo sobre como manipular dados na sua aplicação.
Suporta SQL e NoSQL Pode usar bases de dados relacionais e de documentos como base de dados da sua aplicação.
Arquitetura serverless As ligações escalam de 0 para 1 trabalhador (durante a pré-visualização).
Relações com bases de dados Suportado apenas através do endpoint GraphQL.
Suporte a CLI Desenvolva localmente com a Interface de Comando de Aplicações Web Estáticas. Use a opção --data-api-location para tratar pedidos para APIs de dados em desenvolvimento, tal como são tratados na cloud.

Bases de dados suportadas

A tabela seguinte mostra suporte para diferentes bases de dados relacionais e NoSQL.

Nome Tipo Description REST GraphQL
Azure Cosmos DB Standard Plataforma de base de dados distribuída globalmente para bases de dados NoSQL e relacionais de qualquer escala.

Para além da configuração padrão, é necessário um gql ficheiro de esquema para os endpoints GraphQL.
Azure SQL Standard Família de produtos geridos, seguros e inteligentes que utilizam o motor de base de dados SQL Server na nuvem Azure.
Base de Dados do Azure para MySQL Flexível Serviço de base de dados relacional na cloud Microsoft baseado na MySQL Community Edition
Base de Dados do Azure para PostgreSQL Flex Base de dados PostgreSQL como serviço totalmente gerida que lida com cargas de trabalho críticas com desempenho previsível e escalabilidade dinâmica.
Azure Database for PostgreSQL (single) Solteiro Base de dados PostgreSQL totalmente gerida.

Pode usar os seguintes tipos de ligação para aceder à base de dados:

  • Cadeia de ligação
  • Identidade gerenciada atribuída pelo usuário
  • Identidade Gerida Atribuída ao Sistema

Localização do ponto final

O acesso aos endpoints de dados está disponível fora do caminho padrão /data-api.

A tabela seguinte mostra-lhe como os pedidos são encaminhados para diferentes partes de uma aplicação web estática:

Caminho Description
example.com/api/* Funções da API
example.com/data-api/* Endpoints de ligação à base de dados que suportam pedidos REST e GraphQL.
example.com/* Conteúdo estático

Quando configura ligações à base de dados no seu site, pode configurar o sufixo REST ou GraphQL da rota /data-api/*. O /data-api prefixo é uma convenção das Aplicações Web Estáticas e não pode ser alterado.

Configuração

Existem dois passos para configurar uma ligação à base de dados em Aplicações Web Estáticas. Precisa de ligar a sua base de dados à sua aplicação web estática no portal Azure e atualizar o ficheiro de configuração das suas ligações à base de dados.

Consulte Configuração de ligação à base de dados no Azure Static Web Apps para mais detalhes.

Desenvolvimento local

O Azure Static Web Apps CLI (SWA CLI) inclui suporte para trabalhar com ligações a bases de dados durante o desenvolvimento local.

A CLI ativa o endpoint local /data-api e faz proxies dos pedidos da porta 4280 para a porta apropriada para acesso à base de dados.

Aqui está um comando de exemplo que inicia a CLI SWA com uma ligação à base de dados:

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

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

Observação

No desenvolvimento, se usares uma cadeia de ligação para autenticar, usa a env() função para ler uma cadeia de ligação a partir de uma variável de ambiente. A cadeia passada para a env função deve estar rodeada por aspas.

Segurança baseada em funções

Quando defines uma entidade no ficheirostaticwebapp.database.config.json , podes especificar uma lista de papéis necessários para aceder a um endpoint da entidade.

O seguinte fragmento de configuração exige que o papel de administrador aceda a todas as ações (create, read, update, delete) na entidade de ordens .

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

Quando fizer chamadas para um endpoint que requer uma função, são necessárias as seguintes condições:

  1. O utilizador atual deve estar autenticado.

  2. O utilizador atual deve ser membro da função exigida.

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

    Por exemplo, o seguinte excerto mostra como passar o papel de administrador num cabeçalho de pedido.

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

Constraints

  • As bases de dados devem ser acessíveis pela infraestrutura do Azure.
  • Durante a pré-visualização pública, as ligações à base de dados escalam de 0 para 1 trabalhador da base de dados.

Próximos passos