Hoy vamos a crear Nuestro Primer Azure Functions para informar sobre el Covid19 en Latinoamérica, para esto, vamos a seguir los siguientes pasos:
Crearemos un Grupo de Recursos llamado "Personal" y dentro de este, nombraremos el Fuction App (Aplicación de funciones). En mi caso se llamará "personalfucion.azurewebsites.net", escogeremos la pila de ejecución "Node.js" en su versión 12 dentro de la región que deseen. Ya para finalizar, daremos clic en "Revisar y crear".
Una vez creado nuestro recurso, se nos apertura el centro de aplicaciones de funciones. En la barra lateral izquierda podremos visualizar nuestra Fuction App creada y 3 opciones que dependen de ella: "Funciones, Proxies y Ranuras". Para esta demostración, daremos clic en el "+" para crear una "Nueva Función".
En la siguiente ventana, Azure desea saber desde que entorno de desarrollo vamos a crear nuestra Función. Actualmente existen 3 formas: "Desde Visual Studio Code, desde un editor + y desde el mismo portal de Azure". Para esta demo, seleccionaremos la última opción "En el portal" y daremos clic en "Continuar".
En la siguiente ventana, Azure desea saber desde que tipo de función deseamos crear. Actualmente existen 3 tipos: Webhook y API, Temporizador, o desde una plantilla predeterminada. En este caso, seleccionaremos la primera opción "Webhook y API" porque lo que realizaremos es recibir una solicitud HTTP, procesarla y retornar un resultado. Finalmente daremos clic en "Crear"
¡Y listo! Ya tenemos una función creada con una plantilla de ejemplo. Esta función lo que realiza es recibir un texto y responder con un "Hola + {El texto enviado}".
Ahora probemos, daremos clic en "Obtener la dirección URL de la función", la copiaremos y la pegaremos en nuestro navegador
Nos daremos cuenta de que nos responde un status 400, pero como no le enviamos valores, nos responde con una respuesta personalizada que configuramos. Esto se debe a que, si nos percatamos en la URL, esta termina con == dando a entender que falta un dato por enviarle.
Entonces, vamos a agregar la variable de tipo texto que está esperando nuestra función, para ello, al final de la URL añadiremos "&name=Elton" y volveremos a cargar la página.
¿Acabamos de ver magia? ¡Nooo! solo fue un pequeño código trabajando desde el lado del servidor. Ahora, subiremos el nivel personalizado la función. Para ello, primero necesito que borres TODO lo que está dentro del módulo asíncrono, pero dejando las variables de context y req. Esto debe quedarte así:
Dentro, vamos a crear una condición. Aquí solo estamos comprobando que. si la variable req es enviada como un texto, nos mostrará el mensaje de "Cuenta con pruebas Covid", de lo contrario, si solo recibe un null mostrará el mensaje de "No hay datos sobre el Covid".
Bien, ahora vamos más allá. Dentro de la condición, crearemos un switch/case donde podremos colocar mucha más información adicional. En mi caso, estoy colocando como casos los nombres de los países de Latinoamérica, y como resultado, estoy enviando un valor tipo tabla con información de casos positivos y fallecidos.
A continuación, te dejo el código listo.
module.exports = async function (context, req) {
if(req.query.pais){
let resultado;
switch(req.query.pais.toLowerCase()){
case 'peru':
resultado = {'Casos Positivos': '20 400',
'Fallecidos': '600'};
break;
case 'colombia':
resultado = {'Casos Positivos': '6 400',
'Fallecidos': '100'};
break;
case 'ecuador':
resultado = {'Casos Positivos': '1 400',
'Fallecidos': '50'};
break;
default:
resultado = {'Error': 'No tenemos información del pais'};
}
context.res = {
body: JSON.stringify({'Título': 'La información sobre el Covid19 en '
+ (req.query.pais) + ' es:', 'result': resultado})
};
}
else{
context.res = {
body: JSON.stringify({'Error': 'Tienes que indicar un pais'})
};
}
};
¡Y listo! No te olvides que al "Obtener la dirección URL de la función", al final debes agregar los países que hemos registrado en los casos. Finalmente, como a manera de ejemplo, podrías añadir "&pais=Peru" después del == en la URL.
En conclusión, algunos de los beneficios de utilizar Azure Functions dentro de nuestras aplicaciones son: