Introducción a los enlaces y desencadenadores HTTP de Azure Functions

Puede invocar Azure Functions mediante solicitudes HTTP para crear API sin servidor y responder a webhooks.

Acción Tipo
Ejecución de una función desde una solicitud HTTP Desencadenador
Devolución de una respuesta HTTP desde una función Enlace de salida

Instalación de la extensión

El paquete NuGet de la extensión que instale depende del modo de C# que esté usando en la aplicación de funciones:

Las funciones se ejecutan en un proceso de trabajo de C# aislado. Para más información, consulte Guía para ejecutar C# Azure Functions en un proceso de trabajo aislado.

La funcionalidad de la extensión varía en función de la versión de la extensión:

Para agregar la extensión al proyecto, instale el paquete NuGet, versión 3.x.

Nota

Se necesita un paquete de extensión adicional para la integración de ASP.NET Core en .NET Aislado

Instalación del conjunto

A partir de Functions, versión 2.x, la extensión HTTP forma parte de un conjunto de extensiones, que se especifica en el archivo de proyecto host.json. Para obtener más información, consulte Conjuntos de extensiones.

Esta versión de la extensión ya debe estar disponible para la aplicación de función con el conjunto de extensiones, versión 2.x.

configuración de host.json

En esta sección se describen las opciones de configuración disponibles para este enlace en las versiones 2.x y posteriores. La configuración del archivo host.json se aplica a todas las funciones de una instancia de la aplicación de funciones. El siguiente archivo host.json de ejemplo contiene solo la configuración de la versión 2.x+ para este enlace. Para obtener más información sobre la configuración de la aplicación de funciones en las versiones 2.x y posteriores, consulte la referencia de host.json para Azure Functions.

Nota

Para obtener una referencia de host.json en Functions 1.x, consulte la referencia de host.json para Azure Functions, versión 1.x.

{
    "extensions": {
        "http": {
            "routePrefix": "api",
            "maxOutstandingRequests": 200,
            "maxConcurrentRequests": 100,
            "dynamicThrottlesEnabled": true,
            "hsts": {
                "isEnabled": true,
                "maxAge": "10"
            },
            "customHeaders": {
                "X-Content-Type-Options": "nosniff"
            }
        }
    }
}
Propiedad Valor predeterminado Descripción
customHeaders None Permite establecer encabezados personalizados en la respuesta HTTP. En el ejemplo anterior se agrega el encabezado X-Content-Type-Options a la respuesta para evitar el examen de tipos de contenido. Este encabezado personalizado se aplica a todas las funciones desencadenadas por HTTP en la aplicación de funciones.
dynamicThrottlesEnabled true* Cuando se habilita, esta configuración hace que la canalización de procesamiento de la solicitud compruebe periódicamente contadores de rendimiento del sistema, como connections/threads/processes/memory/cpu/etc y, si cualquiera de esos contadores superan un umbral alto integrado (80 %), las solicitudes se rechazarán con una respuesta 429 "Too Busy" hasta que los contadores vuelvan a niveles normales.
*El valor predeterminado en un plan de consumo es true. El valor predeterminado en un plan dedicado es false.
hsts no habilitado Cuando isEnabled se establece en true, se aplica el comportamiento de la Seguridad de transporte estricta de HTTP (HSTS) de .NET Core, tal como se define en la clase HstsOptions. En el ejemplo anterior también se establece la propiedad maxAge en 10 días. Las propiedades admitidas de hsts son:
PropiedadDescripción
excludedHostsMatriz de cadenas de nombres de host para los que no se agrega el encabezado HSTS.
includeSubDomainsValor booleano que indica si está habilitado el parámetro includeSubDomain del encabezado Strict-Transport-Security.
maxAgeCadena que define el parámetro max-age del encabezado Strict-Transport-Security.
preloadValor booleano que indica si está habilitado el parámetro preload del encabezado Strict-Transport-Security.
maxConcurrentRequests 100* Número máximo de funciones HTTP que se ejecutan en paralelo. Este valor permite controlar la simultaneidad, que a su vez puede ayudar a administrar el uso de recursos. Por ejemplo, podría tener una función HTTP que utiliza una gran cantidad de recursos del sistema (memoria/cpu/sockets) y causa problemas cuando la simultaneidad es demasiado alta. O bien podría tener una función que realiza solicitudes de salida a un servicio de terceros y puede que haya que limitar la velocidad de dichas llamadas. En estos casos puede ayudar aplicar una limitación.
*El valor predeterminado para un plan de consumo es 100. El valor predeterminado para un plan dedicado es ilimitado (-1).
maxOutstandingRequests 200* Número máximo de solicitudes pendientes que se mantienen en un momento dado. Este límite incluye las solicitudes que están en cola pero no han empezado a ejecutarse, así como todas las ejecuciones en curso. Se rechazan todas las solicitudes entrantes que superen este límite con una respuesta 429 "Too Busy" (demasiado ocupado). Esto permite que los llamadores empleen estrategias de reintento basadas en tiempo y también le ayuda a controlar las latencias de solicitud máximas. Únicamente se controlan los movimientos de la cola que se producen dentro de la ruta de ejecución del host del script. Otras colas, como la cola de solicitudes de ASP.NET, siguen en efecto y no se ven alteradas por esta opción de configuración.
*El valor predeterminado para un plan de consumo es 200. El valor predeterminado para un plan dedicado es ilimitado (-1).
routePrefix api Prefijo de ruta que se aplica a todas las rutas. Use una cadena vacía para quitar el prefijo predeterminado.

Pasos siguientes