Conectando Nodejs con Oracle y construyendo una API REST
En este blog, aprenderemos cómo crear una API REST con node.js y Oracle.
Los siguientes softwares deben estar instalados en su máquina:
- Nodejs
- servidor SQL
Configuración de npm para el proyecto:
Primero instale las dependencias de nodos. Abra el terminal y escriba el siguiente comando:
npm init
Ahora necesitamos instalar express y oracle.
Escriba los siguientes comandos:
npm install express -s
npm install oracledb –s
Ahora abra el proyecto en código Vs y abra package.json y escriba el script para ejecutar el proyecto.
Ahora todos los paquetes y la configuración están instalados para ejecutar el proyecto.
Ahora cree la database de la carpeta, haga clic con el botón derecho en la database del nombre de la carpeta y seleccione Add -> New File… (dbConnection.js).
const oracledb = require('oracledb'); // hr schema password var password = '<PASSWORD>' // checkConnection asycn function async function checkConnection() { try { connection = await oracledb.getConnection({ user: "hr", password: password, connectString: "localhost:1521/xepdb1" }); console.log('connected to database'); } catch (err) { console.error(err.message); } finally { if (connection) { try { // Always close connections await connection.close(); console.log('close connection success'); } catch (err) { console.error(err.message); } } } } checkConnection();
Ejecute su aplicación de nodo:
node checkConnection.js
Debe ver esto en su consola:
connected to database close connection success
Consiga a todos los empleados
Nuestro primer punto final de la API REST enviará a todos los empleados de la tabla de empleados:
const express = require('express') const oracledb = require('oracledb'); const app = express(); const port = 3000; var password = '<PASSWORD>'; async function selectAllEmployees(req, res) { try { connection = await oracledb.getConnection({ user: "hr", password: password, connectString: "localhost:1521/xepdb1" }); console.log('connected to database'); // run query to get all employees result = await connection.execute(`SELECT * FROM employees`); } catch (err) { //send error message return res.send(err.message); } finally { if (connection) { try { // Always close connections await connection.close(); console.log('close connection success'); } catch (err) { console.error(err.message); } } if (result.rows.length == 0) { //query return zero employees return res.send('query send no rows'); } else { //send all employees return res.send(result.rows); } } } //get /employess app.get('/employees', function (req, res) { selectAllEmployees(req, res); }) app.listen(port, () => console.log("nodeOracleRestApi app listening on port %s!", port))
Obtenga un empleado con el parámetro id
El segundo punto final de la API REST enviará un empleado de la tabla de empleados con el parámetro id:
const express = require('express') const oracledb = require('oracledb'); const app = express(); const port = 3000; var password = '<PASSWORD>'; async function selectEmployeesById(req, res, id) { try { connection = await oracledb.getConnection({ user: "hr", password: password, connectString: "localhost:1521/xepdb1" }); // run query to get employee with employee_id result = await connection.execute(`SELECT * FROM employees where employee_id=:id`, [id]); } catch (err) { //send error message return res.send(err.message); } finally { if (connection) { try { // Always close connections await connection.close(); } catch (err) { return console.error(err.message); } } if (result.rows.length == 0) { //query return zero employees return res.send('query send no rows'); } else { //send all employees return res.send(result.rows); } } } //get /employee?id=<id employee> app.get('/employee', function (req, res) { //get query param ?id let id = req.query.id; // id param if it is number if (isNaN(id)) { res.send('Query param id is not number') return } selectEmployeesById(req, res, id); }) app.listen(port, () => console.log("nodeOracleRestApi app listening on port %s!", port))
Ejecute su código:
node index.js
Ahora presione el punto final de la API REST desde un navegador http://localhost:3000/employee and http://localhost:3000/employee?id=1 y verá el employee con employee_id=1.
Conclusión
Esta fue una aplicación de API REST de muestra que se conecta a Oracle con Node.js y acepta dos solicitudes http GET separadas:
- Buscar a todos los empleados
- Buscar un empleado con id = <employee_id>
- GET / employee? Id = <employee_id>