Ejercicio: Incorporación de otra aplicación de Azure Functions a una API existente

Completado

Recuerde que quiere integrar todos los microservicios independientes, que son instancias de Azure Functions, en una sola API. Ha agregado la aplicación de funciones Products a una nueva instancia de API Management. Ahora quiere agregar otra aplicación de funciones a esa API.

En este ejercicio, agregará la aplicación de funciones de pedidos a la API y utilizará la herramienta curl para probar el sistema integrado.

Prueba de la función OrderDetails

Antes de agregar la aplicación de funciones Orders a la API,se probará la función que hospeda, OrderDetails.

  1. En el menú de recursos de Azure o en la página Inicio, seleccione Todos los recursos. Aparece el panel Todos los recursos.

  2. Ordene los recursos por Tipo y, después, seleccione la aplicación de funciones cuyo nombre comienza por OrderFunction. Aparece el panel Información general de la aplicación de funciones OrderFunction.

  3. En la lista de funciones de la aplicación de funciones, seleccione OrderDetails. Aparece el panel Información general de la función OrderDetails.

  4. En el menú de OrderDetails, en Desarrollador, seleccione Código y prueba. Aparece el panel Código y prueba de la función OrderDetails, en el que se muestra el contenido del archivo function.json.

    OrderDetails JSON code, with Code + Test in menu and Test/Run in command bar highlighted.

  5. En la barra de comandos, seleccione Probar/ejecutar. Aparece la pestaña de parámetros Entrada de la función OrderDetails.

  6. En el campo Método HTTP, seleccione GET en la lista desplegable y, después, en Consulta, seleccione Agregar parámetro, escriba name en el campo Nombre, escriba Chiba (el valor distingue mayúsculas de minúsculas) en el campo Valor y, después, seleccione Ejecutar.

  7. Se abre una consola de registro en la que se muestra el estado de la solicitud. En la pestaña Salida se muestra el código de respuesta HTTP y el contenido en formato JSON.

    Add a new function option page appears.

    Opcionalmente, puede ejecutar solicitudes adicionales con los valores de nombre Henri y Barriclough para obtener otros pedidos de clientes.

  8. Seleccione Cerrar para cerrar las pestañas Entrada y Salida de Probar/ejecutar.

  9. En la barra de comandos del panel OrderDetails, seleccione Obtener la dirección URL de la función. Observe que la dirección URL es el nombre de la función dentro del dominio azurewebsites.net.

Adición de una función a una API existente

En este paso, agregaremos la función Pedido al recurso API Management que creamos en el ejercicio anterior. En ese ejercicio, utilizamos la interfaz de API Management desde la interfaz de la aplicación de funciones. Aquí, se desplazará a la instancia de API Management mediante el menú de recursos de Azure Portal, solo para mostrar que los dos enfoques están disponibles.

  1. En el menú de recursos de Azure o en la página Inicio, seleccione Todos los recursos. Aparece el panel Todos los recursos.

  2. Ordene los recursos por Tipo y, después, seleccione el servicio API Management OnlineStore. Aparece el servicio API Management para OnlineStore.

  3. En el menú, en API, seleccione API. En el panel API se muestran las opciones para definir una nueva API.

  4. En Create from Azure resource (Crear a partir del recurso de Azure), seleccione Aplicación de funciones.

    Screenshot of the Add a New API screen with a callout highlighting the Azure Function App option.

    Aparece el cuadro de diálogo Crear a partir de la aplicación de funciones.

  5. Para seleccionar la aplicación de funciones, elija Examinar. Aparece el panel Importar Azure Functions.

  6. En el campo Configurar los valores obligatorios, seleccione Seleccionar.

    Screenshot of the Import Azure Functions dialog box with Configure required settings field and Select button highlighted.(../media/5-import-azure-function-app-03-expanded.png#lightbox)

    Aparecerá el panel Seleccione la aplicación de funciones de Azure.

  7. Seleccione OrderFunctionNNNNNNN y después Seleccionar. Vuelve a aparecer el panel Importar Azure Functions con la aplicación de funciones OrderDetails configurada.

  8. Asegúrese de que OrderDetails está seleccionado y, después, en la parte inferior de la página, seleccione Seleccionar para agregar la función. Aparece el cuadro de diálogo Crear a partir de la aplicación de funciones.

  9. Reemplace el valor del campo Sufijo de dirección URL de API por orders. Observe cómo este cambio actualiza la dirección URL base. Seleccione Crear para crear la API.

    Screenshot of the Create from Function App dialog populated with details of the Orders function.

    El servicio API Management OnlineStore muestra la pestaña Diseño con todas las API disponibles (GET, POST) para OrderDetails.

Prueba del punto de conexión de pedidos de OnlineStore en el portal

Ahora que se ha agregado OrderDetails a la API, vamos a probarla con las herramientas de API Management en Azure Portal.

  1. En la pestaña Diseño de las API OrderFunctionNNNNNN, en Todas las operaciones, seleccione GET OrderDetails y luego la pestaña Probar.

  2. En la sección Parámetros de consulta, seleccione Agregar parámetro y escriba name en el campo NOMBRE y Chiba en el campo VALOR. Seleccione Enviar.

  3. En la pestaña del mensaje Respuesta HTTP se muestran la solicitud HTTP correcta (HTTP/1.1/ 200 OK) y un objeto JSON, el cual incluye un identificador de pedido, junto con el nombre del cliente, el precio total del pedido y el estado de envío.

  4. Desplácese hacia arriba hasta la sección Solicitud HTTP; observe que la solicitud se ha enviado a un subdominio y subdirectorio dentro del dominio azure-api.net. Esta ubicación difiere del dominio de host azurewebsites.net.

Prueba de la API combinada

Podemos utilizar la herramienta de línea de comandos curl para enviar solicitudes a nuestra API. cURL es idóneo porque se puede incluir la clave de suscripción correcta con una solicitud. Una solicitud también necesita la ubicación de la API, que se hospeda en Azure API Management y, en este caso, consta de las funciones Products y Orders.

  1. En el menú de recursos de Azure o la página Inicio, seleccione Todos los recursos.

  2. Ordene los recursos por Tipo y, después, seleccione el servicio API Management OnlineStore. Aparece el servicio API Management para OnlineStore.

  3. En la sección Información esencial, mantenga el puntero sobre URL de puerta de enlace y seleccione el icono Copiar al Portapapeles.

  4. En Azure Cloud Shell, a la derecha, vamos a definir algunas variables. Ejecute el siguiente comando, reemplace el marcador de posición <paste URL here> por el valor URL que ha copiado en el Portapapeles y, después, presione Entrar. Este valor define la variable de puerta de enlace.

    GATEWAY_URL=<paste URL here>
    
  5. En Azure, en el menú del servicio API Management OnlineStore, desplácese hacia abajo hasta APIy seleccione Suscripciones. Se abre el panel Suscripciones para la instancia de API Management OnlineStore.

  6. En Built-in all-access subscription (Suscripción de acceso completo integrada), seleccione los puntos suspensivos en el extremo derecho de esa fila y, después, Mostrar u ocultar claves en el menú contextual. Aparecen la clave principal y la clave secundaria de la API.

  7. En el campo Clave principal, seleccione el icono Copiar al Portapapeles.

  8. En Cloud Shell, ejecute el comando siguiente, reemplace el marcador de posición por el valor en el Portapapeles y, después, presione Entrar.

    SUB_KEY=<paste key here>
    
  9. Ahora se pueden solicitar detalles de un pedido y un producto mediante la consulta del mismo servicio API Management:

    1. Para solicitar los detalles de un cliente llamado Henri, ejecute el siguiente comando en Cloud Shell:

       curl -X GET "$GATEWAY_URL/orders/OrderDetails?name=Henri" -H "Ocp-Apim-Subscription-Key:$SUB_KEY"
      

      La respuesta contiene un bloque de código JSON con los detalles del pedido y en el que se muestra que el pedido 56224 se ha enviado a Pascale Henri. También puede probar el comando con los nombres Chiba y Barriclough para obtener resultados diferentes.

    2. Para solicitar los detalles de un pedido con un id de 2, ejecute el siguiente comando en Cloud Shell:

       curl -X GET "$GATEWAY_URL/products/ProductDetails?id=2" -H "Ocp-Apim-Subscription-Key:$SUB_KEY"
      

      La respuesta contiene un bloque de código JSON con los detalles de un producto. También puede probar el comando con los valores de id1 y 3 para obtener resultados diferentes.

Tenga en cuenta que ahora las dos funciones se pueden llamar mediante puntos de conexión dentro del dominio azure-api.net (como se define en GATEWAY_URL), que es el dominio utilizado por Azure API Management. En otros módulos de Learn, puede aprender cómo aplicar directivas, configuraciones de seguridad, cachés externas y otras características de las funciones en una puerta de enlace de API Management. Una puerta de enlace le proporciona un punto de control central, donde puede administrar varios microservicios sin alterar su código.