Compartir a través de


Conectarse a una base de datos con Azure Static Web Apps (versión preliminar)

La característica de conexión de base de datos de Azure Static Web Apps le permite acceder a una base de datos desde una aplicación web estática sin escribir código personalizado del lado servidor.

Una vez creada una conexión entre la aplicación web y la base de datos, puede manipular datos con compatibilidad completa con operaciones CRUD, autorización integrada y relaciones.

En función del generador de API de datos, Azure Static Web Apps toma solicitudes REST y GraphQL, y las convierte en consultas de base de datos.

Entre las características admitidas por las conexiones de base de datos se incluyen las siguientes:

Característica Descripción
Seguridad integrada Integración integrada con el modelo de seguridad de autenticación y autorización de Azure Static Web Apps. La misma seguridad basada en roles que se usa para proteger las rutas está disponible para los puntos de conexión de API.
Operaciones basadas en CRUD completas Consulte los tutoriales de Azure Cosmos DB, Azure SQL, MySQL o PostgreSQL para ver un ejemplo sobre cómo manipular datos en la aplicación.
Admite SQL y NoSQL Puede usar bases de datos relacionales y de documentos como base de datos de la aplicación.
Arquitectura sin servidor Las conexiones se escalan de 0 a 1 trabajo (durante la versión preliminar).
Relaciones de base de datos Solo se admite a través del punto de conexión de GraphQL.
Compatibilidad con la CLI Desarrolle localmente con la CLI de Static Web Apps. Use la opción --data-api-location para controlar las solicitudes a las API de datos en desarrollo tal como se controlan en la nube.

Bases de datos admitidas

En la tabla siguiente se muestra la compatibilidad con diferentes bases de datos relacionales y NoSQL.

Nombre Escribir Descripción REST GraphQL
Azure Cosmos DB Estándar Plataforma de base de datos distribuida globalmente para bases de datos NoSQL y relacionales de cualquier escala.

Además de la configuración estándar, se requiere unarchivo de esquema gql para los puntos de conexión de GraphQL.
SQL de Azure Estándar Familia de productos administrados, seguros e inteligentes que usan el motor de base de datos de SQL Server de la nube de Azure.
Azure Database for MySQL Flex Servicio de base de datos relacional en la nube de Microsoft basado en MySQL Community Edition
Azure Database para PostgreSQL Flex Base de datos como servicio de PostgreSQL totalmente administrada que controla las cargas de trabajo críticas con un rendimiento predecible y escalabilidad dinámica.
Azure Database for PostgreSQL (único) Single Base de datos de PostgreSQL totalmente administrada.

Puede usar los siguientes tipos de conexión para el acceso a la base de datos:

  • Cadena de conexión
  • Identidad administrada asignada por el usuario
  • Identidad administrada asignada por el sistema

Ubicación del punto de conexión

El acceso a los puntos de conexión de datos está disponible fuera de la ruta de acceso /data-api.

En la tabla siguiente se muestra cómo las solicitudes se enrutan a diferentes partes de una aplicación web estática:

Ruta de acceso Descripción
example.com/api/* Funciones de API
example.com/data-api/* Puntos de conexión de base de datos que admiten solicitudes REST y GraphQL.
example.com/* Contenido estático

Al configurar conexiones de base de datos en un sitio web, puede configurar el sufijo REST o GraphQL de la ruta /data-api/*. El prefijo /data-api es una convención de Static Web Apps y no se puede cambiar.

Configuración

Hay dos pasos para configurar una conexión de base de datos en Static Web Apps. Debe conectar la base de datos a la aplicación web estática en Azure Portal y actualizar el archivo de configuración de conexiones de base de datos.

Consulte Configuración de conexión de base de datos en Azure Static Web Apps para obtener más información.

Desarrollo local

La CLI de Azure Static Web Apps (CLI de SWA) incluye compatibilidad para trabajar con conexiones de base de datos durante el desarrollo local.

La CLI activa el punto de conexión local /data-api y las solicitudes de proxy desde el puerto 4280 al puerto adecuado para el acceso a la base de datos.

Este es un comando de ejemplo que inicia la CLI de SWA con una conexión de base de datos:

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

Este comando inicia la CLI de SWA en el directorio src. La opción --data-api-location indica a la CLI que una carpeta denominada swa-db-connections contiene el archivo staticwebapp.database.config.json.

Nota:

En desarrollo, si usa una cadena de conexión para autenticarse, use la función env() para leer una cadena de conexión de una variable de entorno. La cadena pasada a la función env debe estar rodeada de comillas.

Seguridad basada en roles

Al definir una entidad en el archivo staticwebapp.database.config.json, puede especificar una lista de roles necesarios para acceder a un punto de conexión de la entidad.

El siguiente fragmento de configuración requiere el rol de administrador para acceder a todas las acciones (create, read, update, delete) en la entidad orders.

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

Al realizar llamadas a un punto de conexión que requiere un rol, se requieren las siguientes condiciones:

  1. El usuario actual debe autenticarse.

  2. El usuario actual debe ser miembro del rol necesario.

  3. La solicitud de REST o GraphQL debe incluir un encabezado con la clave de X-MS-API-ROLE y un valor del nombre de rol que coincida con lo que se muestra en las reglas de configuración de la entidad.

    Por ejemplo, el fragmento de código siguiente muestra cómo pasar el rol de administrador en un encabezado de solicitud.

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

Restricciones

  • La infraestructura de Azure debe poder acceder a las bases de datos.
  • Durante la versión preliminar pública, las conexiones de base de datos se escalan de 0 a 1 trabajo de base de datos.

Pasos siguientes