Partager via


Connexion à une base de données avec Azure Static Web Apps (préversion)

La fonctionnalité de connexion à la 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 à l’authentification Static Web Apps et au modèle de sécurité d’autorisation. 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 tutoriels pour Azure Cosmos DB, Azure SQL, MySQLou PostgreSQL pour obtenir un exemple sur la façon de manipuler des données dans votre application.
Prend en charge les 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 Les connexions 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 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 n’importe quelle échelle.

Outre la configuration standard, un gqlfichier de schéma est requis pour les points de terminaison GraphQL.
Azure SQL Standard Famille de produits géré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 qui repose sur MySQL Community Edition
Base de données Azure pour PostgreSQL Flex Base de données en tant que service PostgreSQL entièrement managée 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 de l’API
example.com/data-api/* Points de terminaison de connexion à la 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 préfixe /data-api est une convention de Static Web Apps et ne peut pas être modifié.

Configuration

Il y a deux étapes pour configurer une connexion à la 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 Configuration de connexion à la base de données dans Azure Static Web Apps.

Développement local

L’interface CLI Azure Static Web Apps (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 de /data-api local et les requêtes de proxy du 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 à la 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 cours de développement, si vous utilisez une chaîne de connexion pour l’authentification, utilisez la fonction env() pour lire une chaîne de connexion à partir d’une variable d’environnement. La chaîne transmise à la fonction env doit être entourée de guillemets.

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 requis pour accéder à un point de terminaison d’entité.

Le fragment de configuration suivant nécessite que le rôle administrateur accède à toutes les actions (create, read, update, delete) sur l’entité commandes.

{
...
"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 :

  1. L’utilisateur actuel doit être authentifié.

  2. L’utilisateur actuel doit être membre du rôle requis.

  3. La requête REST ou GraphQL doit inclure un en-tête avec la clé de X-MS-API-ROLE et 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 transmettre le rôle 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.

Étapes suivantes