Cuando necesitamos programar un servicio REST en Domino para que otros clientes accedan, son muchas las opciones y lenguajes disponibles.
Parece que con la llegada de Domino REST API (Antes conocido como Domino Keep) HCL quiere unificar y centralizar la definición de REST APIs en Domino con una herramienta mas orientada a la definición que a la implementación.
Pero si no queremos utilizar XPages o no tenemos habilidad en Java y nos sentimos cómodos en lotusscript, podemos cronstruir un API Rest perfectamente funcional utilizando los tradicionales agentes Domino y el lenguaje Lotusscript, que tantos años lleva acompañando en el cliente Designer al servidor Domino.
Así lo explica en una serie de Posts el HCL Ambassador Tom van Aken donde explica desde cómo configurar el servidor para este fin hasta la implementación en lotusscript, que culmina con un ejemplo alojado en OpenNTF.
A partir de este genial ejemplo, me ha parecido oportuno añadir un pequeño enfoque ligeramente distinto en la parte de desarrollo al que Tom propone.
Modelo “Bike”
Para no tocar la parte de Tom y poder ver las diferencias entre ambos modelos, me ha parecido oportuno añadir la entidad “Bike” al modelo de datos de la aplicación.
Responsabilidad del Agente y Responsabilidad de cada Entidad
Uno de los principios SOLID de programación orientada a objetos es el llamado “Principio de Responsabilidad Única”. En el ejemplo que estamos describiendo, es la entidad “Bike” la que se encarga de generar el JSON (Tanto de cada entidad individual como de un array) dejando al agente únicamente la responsabilidad de por una parte hacer de “router” apartir de método REST obtenido y por otra parte procesar e inyectar las cabeceras en la petición http de respuesta.
JSON almacenado en el propio documento
Para acelerar la respuesta en los métodos GET, una opción de mejora es guardar el JSON generado en el propio documento Notes. Esto agiliza el tiempo de respuesta ya que no tiene que construir este JSON en base a los valores de la entidad.
Para ello se utilza el patrón de diseño “ORM” utilizando una clase que “traduce” de valores de Vista o Documento NOtes a Json y viceversa.
El ejemplo completo puede descargarse como plantilla de aplicación Notes desde la web OpenNTF.
Por supuesto, animamos a que nos enviéis posibles mejoras y alternativas de diseño que enriquezcan o den ideas a otros usuarios.
Comentarios