Herstellen einer Verbindung mit einer Datenbank mit Azure Static Web Apps (Vorschau)
Mit dem Datenbankverbindungsfeature von Azure Static Web Apps können Sie von Ihrer statischen Web-App aus auf eine Datenbank zugreifen, ohne benutzerdefinierten serverseitigen Code zu schreiben.
Nachdem Sie eine Verbindung zwischen Ihrer Webanwendung und der Datenbank hergestellt haben, können Sie Daten mit vollständiger Unterstützung für CRUD-Vorgänge, integrierte Autorisierung und Beziehungen bearbeiten.
Basierend auf dem Daten-API-Generator empfängt Azure Static Web Apps REST- und GraphQL-Anforderungen und konvertiert diese in Datenbankabfragen.
Features, die von Datenbankverbindungen unterstützt werden, schließen die folgenden ein:
Funktion | Beschreibung |
---|---|
Integrierte Sicherheit | Vorhandene Integration mit dem Authentifizierungs- und Autorisierungssicherheitsmodell von Azure Static Web Apps. Dieselbe rollenbasierte Sicherheit, die für sichere Routen verwendet wird, ist für API-Endpunkte verfügbar. |
Vollständig CRUD-basierte Vorgänge | In den Tutorials für Azure Cosmos DB, Azure SQL, MySQL oder PostgreSQL finden Sie ein Beispiel zum Bearbeiten von Daten in Ihrer Anwendung. |
Unterstützt SQL und NoSQL | Sie können relationale Datenbanken und Dokumentdatenbanken als Datenbank Ihrer Anwendung verwenden. |
Serverlose Architektur | Verbindungen werden (während der Vorschau) von null auf einen Worker skaliert. |
Datenbankbeziehungen | Ausschließlich über den GraphQL-Endpunkt unterstützt |
CLI-Unterstützung | Entwickeln Sie lokal mit der Static Web Apps-CLI. Verwenden Sie die Option --data-api-location , um Anforderungen an Daten-APIs in der Entwicklung genauso wie in der Cloud zu verarbeiten. |
Unterstützte Datenbanken
Die folgende Tabelle stellt die Unterstützung für verschiedene relationale Datenbanken und NoSQL-Datenbanken dar.
Name | Typ | Beschreibung | REST | GraphQL |
---|---|---|---|---|
Azure Cosmos DB | Standard | Global verteilte Datenbankplattform für NoSQL-Datenbanken und relationale Datenbanken in beliebiger Größenordnung Zusätzlich zur Standardkonfiguration ist für GraphQL-Endpunkte eine gql -Schemadatei erforderlich. |
✔ | |
Azure SQL | Standard | Familie verwalteter, sicherer und intelligenter Produkte, die die SQL Server-Datenbank-Engine in der Azure-Cloud verwenden | ✔ | ✔ |
Azure Database for MySQL | Flex | Dienst für relationale Datenbanken in der Microsoft-Cloud, der auf der MySQL Community Edition basiert | ✔ | ✔ |
Azure-Datenbank für PostgreSQL | Flex | Vollständig verwaltete Database-as-a-Service-Instanz von PostgreSQL, die unternehmenskritische Workloads mit vorhersehbarer Leistung und dynamischer Skalierbarkeit verarbeitet | ✔ | ✔ |
Azure Database for PostgreSQL (Single) | Single | Vollständig verwaltete PostgreSQL-Datenbank | ✔ | ✔ |
Sie können die folgenden Verbindungstypen für den Datenbankzugriff verwenden:
- Verbindungszeichenfolge
- Dem Benutzer zugewiesene Managed Identity
- Systemseitig zugewiesene verwaltete Identität
Endpoint location
Der Zugriff auf Datenendpunkte ist außerhalb des Pfads /data-api
verfügbar.
In der folgenden Tabelle wird veranschaulicht, wie Anforderungen an verschiedene Teile einer statischen Web-App weitergeleitet werden:
Pfad | Beschreibung |
---|---|
example.com/api/* |
API-Funktionen |
example.com/data-api/* |
Datenbankverbindungsendpunkte, die REST- und GraphQL-Anforderungen unterstützen |
example.com/* |
Statischer Inhalt |
Wenn Sie Datenbankverbindungen auf Ihrer Website konfigurieren, können Sie das REST- oder GraphQL-Suffix der /data-api/*
-Route konfigurieren. Das Präfix /data-api
ist eine Konvention von Static Web Apps und kann nicht geändert werden.
Konfiguration
Es gibt zwei Schritte zum Konfigurieren einer Datenbankverbindung in Static Web Apps. Sie müssen Ihre Datenbank mit Ihrer statischen Web-App im Azure-Portal verbinden und die Konfigurationsdatei für Ihre Datenbankverbindungen aktualisieren.
Weitere Informationen finden Sie unter Konfiguration der Datenbankverbindung in Azure Static Web Apps.
Lokale Entwicklung
Die Azure Static Web Apps-CLI (SWA-CLI) schließt die Unterstützung für das Arbeiten mit Datenbankverbindungen während der lokalen Entwicklung ein.
Die CLI aktiviert den lokalen /data-api
-Endpunkt und leitet Anforderung von Port 4280
für den Datenbankzugriff an den entsprechenden Port weiter.
Dieser Beispielbefehl startet die SWA-CLI mit einer Datenbankverbindung:
swa start ./src --data-api-location swa-db-connections
Dieser Befehl startet die SWA-CLI im src-Verzeichnis. Die Option --data-api-location
teilt der CLI mit, dass ein Ordner mit dem Namen swa-db-connections die Datei staticwebapp.database.config.json enthält.
Hinweis
Wenn Sie in der Entwicklung eine Verbindungszeichenfolge zur Authentifizierung verwenden, verwenden Sie die env()
-Funktion, um eine Verbindungszeichenfolge aus einer Umgebungsvariable zu lesen. Die an die env
-Funktion übergebene Zeichenfolge muss von Anführungszeichen umschlossen sein.
Rollenbasierte Sicherheit
Wenn Sie eine Entität in der Datei staticwebapp.database.config.json definieren, können Sie eine Liste der Rollen angeben, die für den Zugriff auf einen Entitätsendpunkt erforderlich sind.
Das folgende Fragment der Konfiguration erfordert die Rolle Administrator, um auf alle Aktionen (create
, read
, update
, delete
) für die Entität Orders zuzugreifen.
{
...
"entities": {
"Orders": {
"source": "dbo.Orders",
"permissions": [
{
"actions": ["*"],
"role": "admin"
}
]
}
}
...
}
Wenn Sie Aufrufe an einen Endpunkt ausführen, der eine Rolle erfordert, sind die folgenden Bedingungen erforderlich:
Der aktuelle Benutzer muss authentifiziert sein.
Der aktuelle Benutzer muss Mitglied der erforderlichen Rolle sein.
Die REST- oder GraphQL-Anforderung muss einen Header mit dem
X-MS-API-ROLE
-Schlüssel und einen Wert des Rollennamens enthalten, der den in den Konfigurationsregeln der Entität aufgeführten Namen entspricht.Beispiel: Das folgende Codeschnipsel veranschaulicht, wie die Rolle Administrator in einem Anforderungsheader übergeben wird.
{ method: "POST", headers: { "Content-Type": "application/json", "X-MS-API-ROLE": "admin" }, body: JSON.stringify(requestPayload) }
Einschränkungen
- Datenbanken müssen über die Infrastruktur von Azure zugreifbar sein.
- Während der Public Preview skalieren Datenbankverbindungen von null auf einen Datenbankworker.