Connecter à une base de données avec Azure Static Web Apps (préversion)
La fonctionnalité de connexion de base de données Azure Static Web Apps vous permet d’accéder à une base de données à partir de votre application web statique sans écrire de code côté serveur personnalisé.
Une fois que vous avez créé une connexion entre votre application web et votre base de données, vous pouvez manipuler des données avec une prise en charge complète des opérations CRUD, une autorisation intégrée et des relations.
En fonction du générateur d’API de données, Azure Static Web Apps prend des requêtes REST et GraphQL et les convertit en requêtes de base de données.
Les fonctionnalités prises en charge par les connexions de base de données sont les suivantes :
Fonctionnalité | Description |
---|---|
Sécurité intégrée | Intégration intégrée au modèle de sécurité d’autorisation et d’authentification Azure Static Web Apps. La même sécurité basée sur les rôles utilisée pour sécuriser les itinéraires est disponible pour les points de terminaison d’API. |
Opérations CRUD complètes | Reportez-vous aux didacticiels pour Azure Cosmos DB, Azure SQL, MySQL ou PostgreSQL pour obtenir un exemple sur la façon de manipuler des données dans votre application. |
Prend en charge SQL et NoSQL | Vous pouvez utiliser des bases de données relationnelles et de documents comme base de données de votre application. |
Architecture serverless | Connecter ions sont mises à l’échelle de 0 à 1 Worker (pendant la préversion). |
Relations de base de données | Pris en charge uniquement via le point de terminaison GraphQL. |
Prise en charge de l’interface CLI | Développez localement avec l’interface CLI Static Web Apps. Utilisez l’option --data-api-location pour gérer les demandes adressées aux API de données dans le développement, tout comme elles sont gérées dans le cloud. |
Bases de données prises en charge
Le tableau suivant présente la prise en charge des différentes bases de données relationnelles et NoSQL.
Nom | Type | Description | REST | GraphQL |
---|---|---|---|---|
Azure Cosmos DB | Standard | Plateforme de base de données distribuée mondialement pour les bases de données NoSQL et relationnelles de toute échelle. En plus de la configuration standard, un gql fichier de schéma est requis pour les points de terminaison GraphQL. |
✔ | |
Azure SQL | Standard | Famille de produits managés, sécurisés et intelligents qui utilisent le moteur de base de données SQL Server dans le cloud Azure. | ✔ | ✔ |
Azure Database pour MySQL | Flex | Service de base de données relationnelle dans le cloud Microsoft basé sur MySQL Community Edition | ✔ | ✔ |
Base de données Azure pour PostgreSQL | Flex | Base de données PostgreSQL entièrement managée en tant que service qui gère les charges de travail stratégiques avec des performances prévisibles et une scalabilité dynamique. | ✔ | ✔ |
Azure Database pour PostgreSQL (unique) | Unique | Base de données PostgreSQL entièrement managée. | ✔ | ✔ |
Vous pouvez utiliser les types de connexion suivants pour l’accès à la base de données :
- Connection string
- Identité managée affectée par l’utilisateur
- Identité managée affectée par le système
Emplacement du point de terminaison
L’accès aux points de terminaison de données est disponible hors du chemin d’accès /data-api
.
Le tableau suivant vous montre comment les requêtes sont acheminées vers différentes parties d’une application web statique :
Path | Description |
---|---|
example.com/api/* |
Fonctions d’API |
example.com/data-api/* |
Points de terminaison de connexion de base de données qui prennent en charge les requêtes REST et GraphQL. |
example.com/* |
Contenu statique |
Lorsque vous configurez des connexions de base de données sur votre site web, vous pouvez configurer le suffixe REST ou GraphQL de l’itinéraire /data-api/*
. Le /data-api
préfixe est une convention d’Static Web Apps et ne peut pas être modifié.
Configuration
Il existe deux étapes pour configurer une connexion de base de données dans Static Web Apps. Vous devez connecter votre base de données à votre application web statique dans le Portail Azure et mettre à jour votre fichier de configuration des connexions de base de données.
Pour plus d’informations, consultez la configuration de la connexion de base de données dans Azure Static Web Apps .
Développement local
Azure Static Web Apps CLI (SWA CLI) inclut la prise en charge de l’utilisation des connexions de base de données pendant le développement local.
L’interface CLI active le point de terminaison local /data-api
et les demandes de proxy de port 4280
vers le port approprié pour l’accès à la base de données.
Voici un exemple de commande qui démarre l’interface CLI SWA avec une connexion de base de données :
swa start ./src --data-api-location swa-db-connections
Cette commande démarre l’interface CLI SWA dans le répertoire src . L’option --data-api-location
indique à l’interface CLI qu’un dossier nommé swa-db-connections contient le fichier staticwebapp.database.config.json .
Remarque
En développement, si vous utilisez un chaîne de connexion pour vous authentifier, utilisez la env()
fonction pour lire un chaîne de connexion à partir d’une variable d’environnement. La chaîne transmise à la env
fonction doit être entourée de guillemets.
la sécurité basée sur les rôles,
Lorsque vous définissez une entité dans le fichier staticwebapp.database.config.json , vous pouvez spécifier une liste de rôles nécessaires pour accéder à un point de terminaison d’entité.
Le fragment de configuration suivant nécessite que le rôle d’administrateur accède à toutes les actions (create
, read
, update
, delete
) sur l’entité orders.
{
...
"entities": {
"Orders": {
"source": "dbo.Orders",
"permissions": [
{
"actions": ["*"],
"role": "admin"
}
]
}
}
...
}
Lorsque vous effectuez des appels à un point de terminaison nécessitant un rôle, les conditions suivantes sont requises :
L’utilisateur actuel doit être authentifié.
L’utilisateur actuel doit être membre du rôle requis.
La requête REST ou GraphQL doit inclure un en-tête avec la clé et
X-MS-API-ROLE
une valeur du nom de rôle correspondant à ce qui est répertorié dans les règles de configuration d’entité.Par exemple, l’extrait de code suivant montre comment passer le rôle d’administrateur dans un en-tête de requête.
{ method: "POST", headers: { "Content-Type": "application/json", "X-MS-API-ROLE": "admin" }, body: JSON.stringify(requestPayload) }
Contraintes
- Les bases de données doivent être accessibles par l’infrastructure d’Azure.
- Pendant la préversion publique, les connexions de base de données sont mises à l’échelle de 0 à 1 worker de base de données.