Conectando-se a um banco de dados com os Aplicativos Web Estáticos do Azure (visualização)
O recurso de conexão de banco de dados de Aplicativos Web Estáticos do Azure permite que você acesse um banco de dados de 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ê pode manipular dados com suporte total para operações CRUD, autorização interna e relacionamentos.
Com base no construtor de API de Dados, os Aplicativos Web Estáticos do Azure recebem solicitações REST e GraphQL e as convertem em consultas de banco de dados.
Os recursos suportados por conexões de banco de dados incluem:
Funcionalidade | Description |
---|---|
Segurança integrada | Integração interna com o modelo de segurança de autenticação e autorização de Aplicativos Web Estáticos do Azure. A mesma segurança baseada em função usada para proteger rotas está disponível para pontos de extremidade de API. |
Operações completas baseadas em CRUD | Consulte os tutoriais do Azure Cosmos DB, Azure SQL, MySQL ou PostgreSQL para obter um exemplo sobre como manipular dados em seu aplicativo. |
Suporta SQL e NoSQL | Você pode usar bancos de dados relacionais e de documentos como o banco de dados do seu aplicativo. |
Arquitetura sem servidor | As conexões são dimensionadas de 0 a 1 trabalhador (durante a visualização). |
Relações de banco de dados | Suportado apenas através do endpoint GraphQL. |
Suporte CLI | Desenvolva localmente com a CLI de aplicativos Web estáticos. Use a --data-api-location opção para lidar com solicitações para APIs de dados em desenvolvimento da mesma forma que são tratadas na nuvem. |
Bases de dados suportadas
A tabela a seguir mostra o suporte para diferentes bancos de dados relacionais e NoSQL.
Nome | Tipo | Description | REST | GraphQL |
---|---|---|---|---|
BD do Cosmos para o Azure | 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 arquivo de esquema é necessário para pontos de gql extremidade GraphQL. |
✔ | |
SQL do Azure | Standard | Família de produtos gerenciados, seguros e inteligentes que usam o mecanismo de banco de dados do SQL Server na nuvem do Azure. | ✔ | ✔ |
Base de Dados do Azure para MySQL | Flexível | Serviço de banco de dados relacional na nuvem da Microsoft baseado no MySQL Community Edition | ✔ | ✔ |
Base de Dados do Azure para PostgreSQL | Flexível | Banco de dados PostgreSQL como serviço 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) | Única | Banco de dados PostgreSQL totalmente gerenciado. | ✔ | ✔ |
Você pode usar os seguintes tipos de conexão para acesso ao banco de dados:
- Connection string
- Identidade gerenciada atribuída pelo usuário
- Identidade gerenciada atribuída pelo sistema
Localização do ponto final
O acesso aos pontos de extremidade de dados está disponível fora do /data-api
caminho.
A tabela a seguir mostra como as solicitações são encaminhadas para diferentes partes de um aplicativo Web estático:
Caminho | Description |
---|---|
example.com/api/* |
Funções da API |
example.com/data-api/* |
Pontos de extremidade de conexão 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 /data-api/*
rota. O /data-api
prefixo é uma convenção de Static Web Apps e não pode ser alterado.
Configuração
Há duas etapas para configurar uma conexão 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 seu arquivo de configuração de conexões de banco de dados.
Consulte Configuração de conexão de banco de dados em 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 local /data-api
e faz proxies de solicitações da porta 4280
para a porta apropriada para acesso ao banco de dados.
Aqui está um comando de exemplo que inicia a CLI SWA com uma conexão de banco 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 informa à CLI que uma pasta chamada swa-db-connections contém o arquivo staticwebapp.database.config.json .
Nota
No desenvolvimento, se você usar uma cadeia de conexão para autenticar, use a env()
função para ler uma cadeia de conexão de uma variável de ambiente. A cadeia de caracteres passada para a função deve ser cercada env
por aspas.
Segurança baseada em funções
Ao definir uma entidade no arquivo staticwebapp.database.config.json , você pode especificar uma lista de funções necessárias para acessar um ponto de extremidade de entidade.
O fragmento de configuração a seguir requer que a função de administrador acesse todas as ações (create
, read
, update
, delete
) na entidade orders.
{
...
"entities": {
"Orders": {
"source": "dbo.Orders",
"permissions": [
{
"actions": ["*"],
"role": "admin"
}
]
}
}
...
}
Quando você faz chamadas para um ponto de extremidade que requer uma função, as seguintes condições são necessárias:
O usuário atual deve ser autenticado.
O usuário atual deve ser um membro da função necessária.
A solicitação REST ou GraphQL deve incluir um cabeçalho com a chave de e um valor do nome da função correspondente ao que está listado nas regras de configuração da
X-MS-API-ROLE
entidade.Por exemplo, o trecho a seguir mostra como passar a função de administrador 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 visualização pública, as conexões de banco de dados são dimensionadas de 0 a 1 operador de banco de dados.