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 :

  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é 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.

Étapes suivantes