Consultas geoespaciales en Azure Redis Cache usando Node.js Azure API App

Hello world!

Ahora vengo con una guía de como realizar consultas geoespaciales en Azure Redis Cache usando Redis para Node.js.

Para crear nuestro ambiente, vamos a realizar los siguientes pasos:

  1. Crear servidor de Redis en Azure
  2. Crear API App en App Services
  3. Crear Node.js Web API en Visual Studio
  4. Publicar API de Node.js en Azure App Services
  5. Probar API con Rest Client

Descargar código aquí:

https://github.com/Kodran/Redis-Geospatial-WebAPI

Pre-Requisitos

Crear servidor de Redis en Azure

Ingresamos al portal de Azure y tecleamos en el buscador: "Redis Cache", luego agregamos un servidor de Redis y capturamos los datos del nuevo servidor:

image

9

Por motivos de demostración, elegiremos un servidor standard, recordemos que si queremos configurar un cluster de Redis o bien, realizar configuraciones mas avanzadas, necesitamos adquirir un servidor "Premium", para mas información puedes visitar el siguiente enlace:
https://docs.microsoft.com/en-us/azure/redis-cache/cache-premium-tier-intro

Una vez creado nuestro servidor de Redis, vamos a crear nuestro recurso de API App.

Crear recurso Azure API App

Vamos al portal de Azure y buscamos por API App:

image

10

Crear Node.js Web API en Visual Studio

Crear nuevo proyecto de Node.js como Azure API App en Visual Studio:

Templates –> JavaScript –> Node.js –> Blank Azure Node.js Web Application

image

Una vez que tengamos el proyecto creado, vamos a bajar de npm los paquetes necesarios para hacer las conexiones a Redis y utilizaremos Express.js para desarrollar nuestra Web API en Node.js

NPM Packeges:

  1. ExpressJS
  2. Redis
  3. Body-parser

2

Express:

image

Redis:

image

Body-parser:

image

Codificar servidor de Node.js y Web API

Para crear nuestro servidor de Node.js y exponer nuestra Web API, vamos a insertar el siguiente bloque de código:

Servidor:

image

Web API:

image

Creamos una nueva carpeta llamada “Services” y luego un archivo de Javascript (JS) para escribir nuestra Web API

La función de nuestro código es inicializar express y luego importar nuestro modulo de Web API de CoffeShop para luego exponerla por el puerto que Azure nos proporciona o bien por el puerto 8080.

Publicar API de Node.js a Azure API App

Para probar que nuestra API funciona correctamente en Azure, vamos a publicar en Azure dando clic derecho en el proyecto Redis.Geospatial.WebAPI –> Publish:

image

Elegimos “Microsoft Azure App Services” y luego elegimos el recurso correspondiente a nuestra API, en nuestro caso es: “api-node-demo

image

image

image

Al final damos clic en “Publish” y esperamos a que Visual Studio haga el despliegue en Azure.

Una vez que Visual Studio haga el despliegue, vamos a probar nuestra API en el navegador:

image

Conectar Web API a Azure Redis Cache

Para conectarnos a Redis y realizar consultas sobre cache, vamos a obtener los datos de conexión para luego ingresarlos en nuestra API:

  1. Host
  2. Port
  3. Auth key

Por motivos de simplicidad, vamos a desactivar en puerto SSL de Redis, para poder conectarnos por el puerto 6379.

Nota: Redis tiene por default el puerto 6380 el cual esta reservado para peticiones SSL, para desactivar el puerto SSL, es necesario ir a “Ports” en nuestro Redis Cache en el portal de Azure para luego desactivar el acceso por SSL, esto va a habilitar el puerto 6379 para peticiones no SSL.

image

image

Ya que tenemos nuestra información de conexión, vamos a agregar un nuevo archivo, el cual va a exponer nuestros métodos de acceso a Redis.

Creamos el siguiente archivo:

Redis.Geospatial.WebAPI –> Cache –> RedisCacheAPI.js

Y escribimos el siguiente código:

RedisCacheAPI.js

image

Explicación:

Se ingresa todos los datos de conexión para crear nuestro cliente. Luego se ingresa nuestra llave de autorización para hacer peticiones a nuestro servidor Redis.

Se crean dos prototipos de nuestro objeto redisApi para exponerlo en el modulo.

Después vamos a importar nuestra API en el servidor para obtener una sola conexión por instancia y luego pasamos el cliente de Redis a cualquier modulo que queramos, en nuestro caso la pasaremos a nuestro CoffeeShopAPI

Server.js

image

CoffeeShopAPI.js

image

Ahora podemos probar nuestra API con algún RestClient, en mi caso utilicé Postman.

Método POST:

image

Ahora podemos ver nuestro registro en Redis con Redis Desktop Manager:

image

Método GET

Con este método vamos a probar que nuestro registro se insertó con éxito

image

Agregar métodos para insertar y consultar cafeterías cercanas

Para poder consultar datos por geolocalización, es necesario insertar una estructura de datos espaciales en Redis, para esto vamos a utilizar nuestra API de Redis que creamos con anterioridad para que ahora guarde datos espaciales.

RedisCacheAPI.js

image

Método getGeoRadius

image

Método insertGeoLocation

image

CoffeeShopAPI.js

image

Publicar y probar Web API

Para probar que nuestra API funciona correctamente, vamos a publicar en Azure dando clic derecho en el proyecto Redis.Geospatial.WebAPI –> Publish –> api-node-demo

image

En Postman ingresamos la URL de nuestra API en Azure y probamos los dos métodos que tenemos.

Insertar cafetería

image

Consultar cafetería cercana (1000 metros a la redonda)

image

Insertar otra cafetería

image

Consultar cafetería cercana (1000 metros a la redonda)

image

Éxito!! Hemos logrado realizar consultas geoespaciales en Redis utilizando Node.js, ahora puedes registrar y buscar cafeterías cercanas por un punto dado.

La ventaja de nuestro código, es que podemos agregar otra API por ejemplo: “Restaurantes, negocios, etc” y posteriormente solo referenciamos nuestro modulo de RedisAPI y ya podremos realizar operaciones en cache.

Supongo que esto te dará muchas ideas para desarrollar aplicaciones súper cool!

Descargar código aquí:

https://github.com/Kodran/Redis-Geospatial-WebAPI

Saludos!

Comments

Popular posts from this blog

Configurar y desplegar una Web API en Azure App Service Environment

Ejecutar pruebas de volumen con Visual Studio y Team Service

Como crear una aplicación .NET Core y almacenarla en un contenedor de Docker usando Visual Studio

Integrar Web API de .NET en proyecto de Xamarin.Forms utilizando Visual Studio y Azure API App

Patrones de diseño para aplicaciones de alta disponibilidad en Azure - Resilient Applications (Parte I: Retry Policy)