Compartir a través de


Personalización de un punto de conexión HTTP en Azure Functions

En este artículo, aprenderá a crear API altamente escalables con Azure Functions mediante la personalización de un desencadenador HTTP para controlar acciones específicas en el diseño de la API. Azure Functions incluye una colección de desencadenadores HTTP y enlaces, lo que le facilita el trabajo tanto al creador como al punto de conexión en varios lenguajes,como Node.js, C# y más. También se preparará para ampliar su API integrándola con Azure Functions Proxies y configurando API simuladas. Como estas tareas se realizan en un entorno de proceso sin servidor de Functions, no tiene que preocuparse de escalar los recursos. En su lugar, puede centrarse simplemente en la lógica de la API.

Importante

Azure Functions Proxies es una característica heredada en las versiones 1.x a 3.x del entorno de ejecución de Azure Functions. La compatibilidad con los proxy se puede volver a habilitar en la versión 4.x para que pueda actualizar correctamente las aplicaciones de funciones a la versión más reciente del entorno de ejecución. Debe cambiar a la integración de las aplicaciones de funciones con Azure API Management tan pronto como sea posible. API Management le permite aprovechar un conjunto más completo de características para definir, proteger, administrar y monetizar las API basadas en Functions. Para más información, consulte Integración de API Management.

Para obtener información sobre cómo volver a habilitar la compatibilidad con servidores proxy en la versión 4.x de Functions, consulte Volver a habilitar servidores proxy en Functions v4.x.

Requisitos previos

Este tema usa como punto de partida los recursos creados en Creación de la primera función en Azure Portal. Si aún no lo hecho, lleve a cabo estos pasos ahora para crear la aplicación de función.

Después de crear esta aplicación de funciones, puede seguir los procedimientos de este artículo.

Inicio de sesión en Azure

Inicie sesión en Azure Portal con su cuenta de Azure.

Personalización de la función HTTP

De forma predeterminada, configura la función de desencadenador HTTP para aceptar cualquier método HTTP. En esta sección, modificará la función para que solo responda a solicitudes GET con /api/hello. Puede usar el URL predeterminado, https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>:

  1. Vaya a su función en Azure Portal. Seleccione Integración en el menú de la izquierda y, luego, seleccione HTTP (req) en Desencadenador.

    Captura de pantalla que muestra cómo editar la configuración del desencadenador HTTP de una función.

  2. Use la configuración de desencadenador HTTP como se especifica en la tabla siguiente.

    Campo Valor de ejemplo Descripción
    Plantilla de ruta hello Determina qué ruta se utiliza para invocar esta función.
    Nivel de autorización Anónimas Opcional: Hace que la función sea accesible sin una clave de API
    Métodos HTTP seleccionados GET Permite que solo se usen los métodos HTTP seleccionados para invocar esta función.

    Como una configuración global controla el prefijo de ruta de acceso base de /api en la plantilla de ruta, no es necesario establecerlo aquí.

  3. Seleccione Guardar.

Para obtener más información sobre cómo personalizar funciones HTTP, consulte Introducción a los enlaces y desencadenadores HTTP de Azure Functions.

Prueba de la API

A continuación, pruebe la función para verla en acción con la nueva superficie de la API:

  1. En la página Función, seleccione Código y prueba en el menú de la izquierda.

  2. Seleccione Obtener la dirección URL de la función en el menú superior y copie la dirección URL. Confirme que la función ahora use la ruta de acceso /api/hello.

  3. Copie la dirección URL en una nueva pestaña del explorador o el cliente de REST que prefiera. Los exploradores usan GET de forma predeterminada.

  4. Agregue parámetros a la cadena de consulta en la dirección URL. Por ejemplo, /api/hello/?name=John.

  5. Pulse Intro para confirmar que la función opera correctamente. Debería ver la respuesta "Hello John".

  6. También puede llamar al punto de conexión con otro método HTTP para confirmar que no se ejecuta la función. Para los métodos HTTP distintos de GET, debe usar una herramienta de prueba HTTP segura.

Introducción a Servidores proxy

En la siguiente sección, expondrá la API a través de un proxy. Azure Functions Proxies permite reenviar solicitudes a otros recursos. Un punto de conexión HTTP se define igual que lo haría con el desencadenador HTTP. Sin embargo, en lugar de escribir código que se ejecute cuando se llame a ese punto de conexión, se proporciona una dirección URL a una implementación remota. Esto permite crear varios orígenes de API dentro de una sola superficie de API, que es más fácil de consumir para los clientes, y resulta muy útil si desea compilar la API como microservicios.

Un servidor proxy puede apuntar a cualquier recurso HTTP, como:

Para obtener más información sobre Azure Functions Proxies, consulte [Trabajar con proxies heredados].

Nota:

Azure Functions Proxies está disponible en las versiones de 1.x a 3.x de Azure Functions.

Creación de su primer proxy

En esta sección, creará un proxy que actúa como front-end de la API en general.

Configurar el entorno de front-end

Repita los pasos de Crear una aplicación de función para crear una aplicación de función nueva en la que crear el proxy. Esta nueva dirección URL de la aplicación sirve como front-end para la API, mientras que la aplicación de función que ha editado antes actúa como back-end:

  1. Vaya a la nueva aplicación de función de front-end en el portal.

  2. Expanda Configuración y, después, seleccione Variables de entorno.

  3. Seleccione la pestaña Configuración de la aplicación, donde se almacenan los pares de clave-valor.

  4. Seleccione + Agregar para crear un nuevo ajuste. Introduzca HELLO_HOST como el Nombre y establezca el Valor en el host de la aplicación de función de back-end, como <YourBackendApp>.azurewebsites.net.

    Este valor forma parte de la dirección URL que ha copiado antes al probar la función HTTP. Más adelante, hará referencia a este valor en la configuración.

    Nota:

    Se recomienda utilizar la configuración de la aplicación para que la configuración del host evite una dependencia de entorno codificada de forma rígida para el proxy. Al usarse la configuración de la aplicación, puede mover la configuración del proxy entre entornos, y se aplicará la configuración de la aplicación específica del entorno.

  5. Seleccione Aplicar para guardar la nueva configuración. En la pestaña Configuración de la aplicación, seleccione Aplicar y, a continuación, Confirmar para reiniciar la aplicación de funciones.

Crear un proxy en el front-end

  1. Vuelva a la aplicación de función de front-end en el portal.

  2. En el menú izquierdo, expanda Funciones, y seleccione Proxies y, luego, Agregar.

  3. En la página Nuevo proxy, use la configuración de la tabla siguiente y seleccione Crear.

    Campo Valor de ejemplo Descripción
    Nombre HelloProxy Un nombre descriptivo que se usa solo para la administración
    Plantilla de ruta /api/remotehello Determina qué ruta se utiliza para invocar este proxy.
    Dirección URL de back-end https://%HELLO_HOST%/api/hello Especifica el punto de conexión al que la solicitud debe remitir a través del proxy.

    Captura de pantalla que muestra la configuración de la página Nuevo proxy.

    Como Azure Functions Proxies no proporciona el prefijo de ruta de acceso base /api, debe incluirlo en la plantilla de ruta. La sintaxis %HELLO_HOST% hace referencia a la configuración de la aplicación que creó antes. La dirección URL resuelta apunta a la función original.

  4. Pruebe el nuevo proxy; para ello, copie la dirección URL del proxy y pruébela en el explorador o con su cliente HTTP favorito:

    • Para una función anónima, use: https://YOURPROXYAPP.azurewebsites.net/api/remotehello?name="Proxies".
    • Para una función con autorización, use: https://YOURPROXYAPP.azurewebsites.net/api/remotehello?code=YOURCODE&name="Proxies".

Creación de una API simulada

A continuación, se utiliza un proxy para crear una API simulada para su solución. Este proxy permite que avance el desarrollo del cliente, sin necesidad de implementar totalmente el back-end. Más adelante en el desarrollo, puede crear una nueva aplicación de función que admita esta lógica, y redirigir al proxy a ella:

  1. Para crear esta API simulada, cree un proxy, esta vez mediante el Editor de App Service. Para empezar, vaya a la aplicación de función en Azure Portal. Seleccione Características de la plataforma y elija Editor de App Service en Herramientas de desarrollo.

    El Editor de App Service se abre en una nueva pestaña.

  2. En el panel izquierdo, seleccione proxies.json. Este archivo almacena la configuración para todos los servidores proxy. Si utiliza uno de los métodos de implementación de Functions, mantendrá este archivo en el control de código fuente. Para obtener más información sobre este archivo, consulte Configuración avanzada de servidores proxy.

    El archivo proxies.json debe ser similar al siguiente:

    {
        "$schema": "http://json.schemastore.org/proxies",
        "proxies": {
            "HelloProxy": {
                "matchCondition": {
                    "route": "/api/remotehello"
                },
                "backendUri": "https://%HELLO_HOST%/api/hello"
            }
        }
    }
    
  3. Agregue la API simulada. Reemplace su archivo proxies.json por el siguiente código:

    {
        "$schema": "http://json.schemastore.org/proxies",
        "proxies": {
            "HelloProxy": {
                "matchCondition": {
                    "route": "/api/remotehello"
                },
                "backendUri": "https://%HELLO_HOST%/api/hello"
            },
            "GetUserByName" : {
                "matchCondition": {
                    "methods": [ "GET" ],
                    "route": "/api/users/{username}"
                },
                "responseOverrides": {
                    "response.statusCode": "200",
                    "response.headers.Content-Type" : "application/json",
                    "response.body": {
                        "name": "{username}",
                        "description": "Awesome developer and master of serverless APIs",
                        "skills": [
                            "Serverless",
                            "APIs",
                            "Azure",
                            "Cloud"
                        ]
                    }
                }
            }
        }
    }
    

    Este código agrega un nuevo proxy, GetUserByName, que omite la propiedad backendUri. En lugar de llamar a otro recurso, modifica la respuesta predeterminada de Azure Functions Proxies mediante una invalidación de la respuesta. También puede usar las invalidaciones de solicitud y respuesta junto con una dirección URL de back-end. Esta técnica resulta útil cuando remite a través de un proxy a un sistema heredado, donde podría necesitar modificar los encabezados, los parámetros de consulta, etc. Para obtener más información más sobre las invalidaciones de solicitud y respuesta, consulte Modificar solicitudes y respuestas.

  4. Pruebe la API simulada mediante una llamada al punto de conexión <YourProxyApp>.azurewebsites.net/api/users/{username} con un explorador o el cliente de REST que prefiera. Reemplace {username} por un valor de cadena que represente un nombre de usuario.

En este artículo, ha aprendido a compilar y personalizar una API con Azure Functions. También ha aprendido a reunir varias API, incluidas las API simuladas, como una superficie de API unificada. Puede utilizar estas técnicas para crear API de cualquier complejidad, todo ello mientras ejecuta el modelo de proceso sin servidor proporcionado por Azure Functions.

Para obtener más información acerca del desarrollo de la API: