Anslut till en databas med Azure Static Web Apps (förhandsversion)
Med databasanslutningsfunktionen för Azure Static Web Apps kan du komma åt en databas från din statiska webbapp utan att skriva anpassad kod på serversidan.
När du har skapat en anslutning mellan webbprogrammet och databasen kan du ändra data med fullständigt stöd för CRUD-åtgärder, inbyggd auktorisering och relationer.
Baserat på data-API-byggare tar Azure Static Web Apps REST- och GraphQL-begäranden och konverterar dem till databasfrågor.
Funktioner som stöds av databasanslutningar är:
Funktion | beskrivning |
---|---|
Integrerad säkerhet | Inbyggd integrering med Azure Static Web Apps-autentisering och auktoriseringssäkerhetsmodell. Samma rollbaserade säkerhet som används för att skydda vägar är tillgänglig för API-slutpunkter. |
Fullständiga CRUD-baserade åtgärder | I självstudierna för Azure Cosmos DB, Azure SQL, MySQL eller PostgreSQL finns ett exempel på hur du manipulerar data i ditt program. |
Stöder SQL och NoSQL | Du kan använda relations- och dokumentdatabaser som programmets databas. |
Serverlös arkitektur | Anslut ions skalas från 0 till 1 arbetare (under förhandsversionen). |
Databasrelationer | Stöds endast via GraphQL-slutpunkten. |
CLI-stöd | Utveckla lokalt med Static Web Apps CLI. Använd alternativet --data-api-location för att hantera begäranden till data-API:er under utveckling precis som de hanteras i molnet. |
Databaser som stöds
I följande tabell visas stöd för olika relationsdatabaser och NoSQL-databaser.
Namn | Type | Beskrivning | REST | GraphQL |
---|---|---|---|---|
Azure Cosmos DB | Standard | Globalt distribuerad databasplattform för både NoSQL- och relationsdatabaser i valfri skala. Förutom standardkonfigurationen krävs en gql schemafil för GraphQL-slutpunkter. |
✔ | |
Azure SQL | Standard | Familj av hanterade, säkra och intelligenta produkter som använder SQL Server-databasmotorn i Azure-molnet. | ✔ | ✔ |
Azure Database for MySQL | Flex | Relationsdatabastjänst i Microsoft-molnet baserat på MySQL Community Edition | ✔ | ✔ |
Azure Database for PostgreSQL | Flex | Fullständigt hanterad PostgreSQL-databas som en tjänst som hanterar verksamhetskritiska arbetsbelastningar med förutsägbar prestanda och dynamisk skalbarhet. | ✔ | ✔ |
Azure Database for PostgreSQL (enkel) | Enstaka | Fullständigt hanterad PostgreSQL-databas. | ✔ | ✔ |
Du kan använda följande anslutningstyper för databasåtkomst:
- Connection string
- Användartilldelad hanterad identitet
- Systemtilldelad hanterad identitet
Slutpunktsplats
Åtkomst till dataslutpunkter är tillgängliga utanför /data-api
sökvägen.
I följande tabell visas hur begäranden dirigeras till olika delar av en statisk webbapp:
Sökväg | beskrivning |
---|---|
example.com/api/* |
API-funktioner |
example.com/data-api/* |
Databasanslutningsslutpunkter som stöder REST- och GraphQL-begäranden. |
example.com/* |
Statiskt innehåll |
När du konfigurerar databasanslutningar på webbplatsen kan du konfigurera REST- eller GraphQL-suffixet för /data-api/*
vägen. Prefixet /data-api
är en konvention för Static Web Apps och kan inte ändras.
Konfiguration
Det finns två steg för att konfigurera en databasanslutning i Static Web Apps. Du måste ansluta databasen till din statiska webbapp i Azure-portalen och uppdatera konfigurationsfilen för databasanslutningar.
Mer information finns i Konfiguration av databasanslutning i Azure Static Web Apps .
Lokal utveckling
Azure Static Web Apps CLI (SWA CLI) innehåller stöd för att arbeta med databasanslutningar under lokal utveckling.
CLI aktiverar den lokala /data-api
slutpunkten och proxyservrar begär från porten 4280
till lämplig port för databasåtkomst.
Här är ett exempelkommando som startar SWA CLI med en databasanslutning:
swa start ./src --data-api-location swa-db-connections
Det här kommandot startar SWA CLI i src-katalogen . Alternativet --data-api-location
anger för CLI att en mapp med namnet swa-db-connections innehåller staticwebapp.database.config.json-filen.
Kommentar
Om du använder en anslutningssträng för att autentisera env()
använder du funktionen för att läsa en anslutningssträng från en miljövariabel. Strängen som skickas till env
funktionen måste vara omgiven av citattecken.
Rollbaserad säkerhet
När du definierar en entitet i filen staticwebapp.database.config.json kan du ange en lista över roller som krävs för att få åtkomst till en entitetsslutpunkt.
Följande konfigurationsfragment kräver att administratörsrollen har åtkomst till alla åtgärder (create
, read
, update
, delete
) på entiteten orders.
{
...
"entities": {
"Orders": {
"source": "dbo.Orders",
"permissions": [
{
"actions": ["*"],
"role": "admin"
}
]
}
}
...
}
När du gör anrop till en slutpunkt som kräver en roll krävs följande villkor:
Den aktuella användaren måste autentiseras.
Den aktuella användaren måste vara medlem i den nödvändiga rollen.
REST- eller GraphQL-begäran måste innehålla ett huvud med nyckeln
X-MS-API-ROLE
till och ett värde för rollnamnet som matchar det som anges i entitetskonfigurationsreglerna.Följande kodfragment visar till exempel hur du skickar administratörsrollen i ett begärandehuvud.
{ method: "POST", headers: { "Content-Type": "application/json", "X-MS-API-ROLE": "admin" }, body: JSON.stringify(requestPayload) }
Krav
- Databaser måste vara tillgängliga via Azures infrastruktur.
- Under den offentliga förhandsversionen skalas databasanslutningarna från 0 till 1 databasarbetare.