Nota importante: Esta entrada de blog contiene información sobre una función CURL de Eventing. La función CURL cambiará en Couchbase Server 6.5, por favor consulta Uso de cURL con el servicio Eventing: Actualización para más detalles.
El servicio Couchbase Eventing es nuevo a partir de Couchbase 5.5 y anteriormente había escrito un tutorial sobre detección de información sensible y envío de notificaciones. En mi tutorial anterior demostré como hacer peticiones a un servicio remoto usando el operador cURL en N1QL. Sin embargo, ¿qué pasa si no quieres usar N1QL para hacer el trabajo?
Vamos a ver cómo utilizar la función cURL para realizar peticiones en lugar de N1QL cuando se utiliza la función Servicio de eventos.
En este momento, Eventing está en Developer Preview, por lo que la funcionalidad puede estar sujeta a cambios. Sin embargo, esto debería darle una idea de lo que puede hacer.
Tenga en cuenta que la construcción curl aún está en desarrollo. Esta función está pensada únicamente para fines de desarrollo y no debe utilizarse en entornos de producción.
En lugar de intentar encontrar una API para usar, vamos a crear la nuestra propia con Node.js, similar a lo que hicimos en el ejemplo anterior. Una vez que tengamos la API, vamos a crear una función en Couchbase que se activará cuando se creen o cambien nuevos documentos.
Creación de una API Node.js para recibir solicitudes
Nuestra API va a ser increíblemente simple porque Node.js no es el foco de este tutorial. Vamos a recibir datos y devolver esos mismos datos a nuestra función.
Cree un nuevo directorio en su ordenador y ejecute los siguientes comandos desde la CLI dentro de ese directorio:
1 2 |
npm init -y npm instale express cuerpo-analizador --guardar |
Los comandos anteriores crearán un nuevo paquete.json e instala Express Framework y un módulo para aceptar los cuerpos de las peticiones. Con las dependencias disponibles, ejecute lo siguiente:
1 |
toque aplicación.js |
Si utiliza Windows, cree el archivo app.js como quieras.
Abra el archivo app.js e incluya el siguiente código JavaScript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
const Express = requiere("express"); const BodyParser = requiere("body-parser"); var aplicación = Express(); aplicación.utilice(BodyParser.json()); aplicación.utilice(BodyParser.urlencoded({ ampliado: verdadero })); aplicación.Correo electrónico:("/notificar", (solicitar, respuesta) => { consola.registro("POST /notify"); respuesta.enviar(solicitar.cuerpo); }); var servidor = aplicación.escuche(3000, () => { consola.registro("Escuchando..."); }); |
Tenemos un único endpoint que hace exactamente lo que he mencionado anteriormente. Cuando ejecutamos esta aplicación, está sirviendo en el puerto 3000. En nuestro ejemplo, tanto la base de datos como la aplicación Node.js se ejecutarán localmente. Si las cosas son diferentes, asegúrate de que la aplicación Node.js es accesible desde un host remoto.
Desarrollo de una función Couchbase simple con soporte cURL
Nuestra función será muy simple para este ejemplo. No vamos a comprobar ciertos datos, sólo vamos a comprobar si algo se ha creado o cambiado. Si la función se dispara, enviaremos los datos a nuestra aplicación Node.js.
En el Eventos del Panel Administrativo de Couchbase, crea una nueva función, mapeando el Bucket correcto y el Bucket de meta información. El código que queremos añadir tiene el siguiente aspecto:
1 2 3 4 5 6 7 |
función OnUpdate(doc, meta) { registro(documento, doc); var respuesta = rizo("http://localhost:3000/notify", { método: "POST", datos: doc }); registro(rizo, respuesta); } función OnDelete(meta) { } |
Fíjese en que estamos utilizando rizo
y especificando algunas opciones como el cuerpo de la petición y el método. Si quisiéramos podríamos añadir otras propiedades como cabeceras o autorización.
Intente añadir un nuevo documento o cambiar uno. El documento debe enviar.
Conclusión
Acabas de ver cómo enviar datos a un servicio remoto desde una Couchbase Function con la función cURL y el servicio Couchbase Eventing. Esto es un poco diferente a mi ejemplo anterior porque no utiliza N1QL para hacerlo posible.
Para obtener más información sobre el servicio Eventing de Couchbase, consulte la página Portal para desarrolladores de Couchbase.