En mis últimos blogs de la serie sobre #XSA, escribí sobre la creación de módulos de node js, exponiendo OData, entre otros conceptos. Hoy, me gustaría profundizar en este tema y proporcionar detalles adicionales sobre la creación de APIs REST. El mismo blog se puede leer en español
aquí.
*una diferencia de mis blogs anteriores a ahora es que estaba usando SP03 antes, ahora SP04. Además, estaba tratando de evitar usar XS CLI ya que sé que es un tema delicado para los administradores que proporcionan acceso a Linux a los desarrolladores en la mayoría de las empresas.
Desafío 1: habilitar el servicio UAA para autenticar las solicitudes en el módulo node.
Solución: en realidad es muy simple. Los pasos iniciales ya estaban documentados, pero los incluiré aquí de todos modos.
- Asegúrese de que el archivo mta.yaml tenga las dependencias del módulo (html, db, node, uaa), esto se refiere a la sección requires/provides y asegurarse de que estén hechos correctamente
- Asegúrese de que el archivo xs-app.json contenga el tipo de autenticación "route" y las rutas reales
- Suponiendo que tanto la compatibilidad con XSJS como el soporte node js estén habilitados en el módulo node, proceda a inicializar estos elementos desde el archivo server.js
El archivo server.js es el archivo de punto de entrada (según el paso de inicio predeterminado en el archivo package.json)
- Luego, desde el archivo server.js, se llama al enrutador (módulo express) para analizar la solicitud y pasarla eventualmente a la ejecución de la función correspondiente.
- Observe que las rutas definidas en el archivo xs-app.json del módulo de UI DEBEN coincidir con las rutas definidas en el archivo index.js del enrutador de node, de lo contrario, obtendrá respuestas http 404 "No encontrado"
Gracias a Lucía y Craig por sus blogs
- En el archivo index.js de la carpeta de enrutador, también estamos importando demoSvc.js (implementación del servicio) donde ejecutaremos scripts SQL o procedimientos almacenados (asumiendo que estos ya están creados en el módulo de base de datos y tenemos los permisos adecuados para ejecutarlos). Durante mi ejercicio, creé una tabla cds local, un proc y agregué algunos datos a mi tabla cds.
Una vez alineadas estas cosas, solo fue cuestión de agregar la lógica node js real para ejecutar consultas o procedimientos.
En mi opinión, las mejores prácticas serían impulsar más en la base de datos (usando procedimientos) pero también estaba curioso por ver cómo se hacía el método SQL desde un módulo node, sorprendentemente fácil en mi opinión.
En primer lugar, verifique que pueda recibir una solicitud y responder correctamente. Utilizo solicitudes/respuestas json porque la mayoría de las aplicaciones web y API REST interactúan de esa manera.
Si tiene éxito en el paso anterior, entonces procedamos a llamar a una consulta SELECT.
- Observe cómo el objeto req (contiene una propiedad db que eventualmente es el cliente) y se utiliza para ejecutar nuestra declaración SQL
- La función preparar toma una declaración SQL como primer parámetro, y un callback que devuelve errores y declaraciones
- El error nos informaría de inmediato si no tenemos permisos o si hay algún otro problema con nuestra consulta
- El objeto de declaración nos permite ejec