Dela via


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:

  1. Den aktuella användaren måste autentiseras.

  2. Den aktuella användaren måste vara medlem i den nödvändiga rollen.

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

Nästa steg