Delen via


Verbinding maken naar een database met Azure Static Web Apps (preview)

Met de azure Static Web Apps-databaseverbindingsfunctie hebt u toegang tot een database vanuit uw statische web-app zonder dat u aangepaste code aan de serverzijde hoeft te schrijven.

Zodra u een verbinding hebt gemaakt tussen uw webtoepassing en database, kunt u gegevens bewerken met volledige ondersteuning voor CRUD-bewerkingen, ingebouwde autorisatie en relaties.

Op basis van de data-API-opbouwfunctie neemt Azure Static Web Apps REST- en GraphQL-aanvragen en converteert deze naar databasequery's.

Functies die worden ondersteund door databaseverbindingen zijn onder andere:

Functie Beschrijving
Geïntegreerde beveiliging Ingebouwde integratie met verificatie- en autorisatiebeveiligingsmodel van Azure Static Web Apps. Dezelfde op rollen gebaseerde beveiliging die wordt gebruikt om routes te beveiligen, is beschikbaar voor API-eindpunten.
Volledige CRUD-bewerkingen Raadpleeg de zelfstudies voor Azure Cosmos DB, Azure SQL, MySQL of PostgreSQL voor een voorbeeld over het bewerken van gegevens in uw toepassing.
Ondersteunt SQL en NoSQL U kunt relationele databases en documentdatabases gebruiken als database van uw toepassing.
Serverloze architectuur Verbinding maken ionen worden geschaald van 0 tot 1 werkrol (tijdens de preview).
Databaserelaties Alleen ondersteund via het GraphQL-eindpunt.
CLI-ondersteuning Lokaal ontwikkelen met de Static Web Apps CLI. Gebruik de --data-api-location optie om aanvragen voor gegevens-API's in ontwikkeling te verwerken, net zoals ze worden verwerkt in de cloud.

Ondersteunde databases

In de volgende tabel ziet u ondersteuning voor verschillende relationele en NoSQL-databases.

Name Type Description REST GraphQL
Azure Cosmos DB Standaard Wereldwijd gedistribueerd databaseplatform voor noSQL- en relationele databases van elke schaal.

Naast de standaardconfiguratie is eengql schemabestand vereist voor GraphQL-eindpunten.
Azure SQL Standaard Familie van beheerde, veilige en intelligente producten die gebruikmaken van de SQL Server-database-engine in de Azure-cloud.
Azure Database for MySQL Flex Relationele databaseservice in de Microsoft-cloud op basis van de MySQL Community Edition
Azure Database for PostgreSQL Flex Volledig beheerde PostgreSQL-database-as-a-service die bedrijfskritieke workloads verwerkt met voorspelbare prestaties en dynamische schaalbaarheid.
Azure Database for PostgreSQL (één) Eén Volledig beheerde PostgreSQL-database.

U kunt de volgende verbindingstypen gebruiken voor databasetoegang:

  • Connection string
  • Door de gebruiker toegewezen beheerde identiteit
  • Door het systeem toegewezen beheerde identiteit

Eindpuntlocatie

Toegang tot gegevenseindpunten is beschikbaar buiten het /data-api pad.

In de volgende tabel ziet u hoe aanvragen worden doorgestuurd naar verschillende onderdelen van een statische web-app:

Pad Beschrijving
example.com/api/* API-functies
example.com/data-api/* Databaseverbindingseindpunten die REST- en GraphQL-aanvragen ondersteunen.
example.com/* Statische inhoud

Wanneer u databaseverbindingen op uw website configureert, kunt u het REST- of GraphQL-achtervoegsel van de /data-api/* route configureren. Het /data-api voorvoegsel is een conventie van Static Web Apps en kan niet worden gewijzigd.

Configuratie

Er zijn twee stappen voor het configureren van een databaseverbinding in Static Web Apps. U moet uw database verbinden met uw statische web-app in Azure Portal en het configuratiebestand voor databaseverbindingen bijwerken.

Zie de configuratie van de databaseverbinding in Azure Static Web Apps voor meer informatie.

Lokale ontwikkeling

De Azure Static Web Apps CLI (SWA CLI) bevat ondersteuning voor het werken met databaseverbindingen tijdens lokale ontwikkeling.

De CLI activeert het lokale /data-api eindpunt en proxyaanvragen van poort 4280 naar de juiste poort voor databasetoegang.

Hier volgt een voorbeeldopdracht waarmee de SWA CLI wordt gestart met een databaseverbinding:

swa start ./src --data-api-location swa-db-connections

Met deze opdracht start u de SWA CLI in de src-map . De --data-api-location optie vertelt de CLI dat een map met de naam swa-db-connections het staticwebapp.database.config.json-bestand bevat.

Notitie

Als u in ontwikkeling een verbindingsreeks gebruikt om te verifiëren, gebruikt u de env() functie om een verbindingsreeks van een omgevingsvariabele te lezen. De tekenreeks die aan de env functie wordt doorgegeven, moet tussen aanhalingstekens staan.

Op rollen gebaseerde beveiliging

Wanneer u een entiteit in het staticwebapp.database.config.json-bestand definieert, kunt u een lijst opgeven met rollen die vereist zijn voor toegang tot een entiteitseindpunt.

Voor het volgende configuratiefragment is de beheerdersrol vereist voor toegang tot alle acties (create, read, update, delete) op de entiteit Orders.

{
...
"entities": { 
  "Orders": { 
    "source": "dbo.Orders", 
    "permissions": [ 
      { 
        "actions": ["*"], 
        "role": "admin" 
      }
    ]
 }
}
...
}

Wanneer u een eindpunt aanroept waarvoor een rol is vereist, zijn de volgende voorwaarden vereist:

  1. De huidige gebruiker moet worden geverifieerd.

  2. De huidige gebruiker moet lid zijn van de vereiste rol.

  3. De REST- of GraphQL-aanvraag moet een header bevatten met de sleutel van X-MS-API-ROLE en een waarde van de rolnaam die overeenkomt met wat wordt vermeld in de regels voor entiteitsconfiguratie.

    In het volgende fragment ziet u bijvoorbeeld hoe u de beheerdersrol doorgeeft in een aanvraagheader.

    {
      method: "POST",
      headers: { 
        "Content-Type": "application/json",
        "X-MS-API-ROLE": "admin"
      },
      body: JSON.stringify(requestPayload)
    }
    

Beperkingen

  • Databases moeten toegankelijk zijn voor de infrastructuur van Azure.
  • Tijdens de openbare preview worden databaseverbindingen geschaald van 0 tot 1 databasemedewerker.

Volgende stappen