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 een gql 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:
De huidige gebruiker moet worden geverifieerd.
De huidige gebruiker moet lid zijn van de vereiste rol.
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.