Oracle conectado a Nodejs para construir API REST

[vc_row el_class=”blog-info”][vc_column][vc_single_image source=”featured_image” img_size=”full” style=”vc_box_rounded”][vc_empty_space height=”40px”][vc_row_inner][vc_column_inner width=”1/6″][/vc_column_inner][vc_column_inner width=”2/3″][vc_column_text el_class=”font-weight-bold”]

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:

  1. Nodejs
  2. servidor SQL

[/vc_column_text][vc_empty_space height=”40px”][/vc_column_inner][vc_column_inner width=”1/6″][/vc_column_inner][/vc_row_inner][vc_row_inner][vc_column_inner width=”1/6″][/vc_column_inner][vc_column_inner width=”2/3″][vc_column_text]


Configuración de npm para el proyecto:

Primero instale las dependencias de nodos. Abra el terminal y escriba el siguiente comando:

npm init

Oracle

Ahora necesitamos instalar express y oracle.

Escriba los siguientes comandos:

npm install express -s
npm install oracledb –s

Oracle

Oracle

Ahora abra el proyecto en código Vs y abra package.json y escriba el script para ejecutar el proyecto.

Oracle

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>

[/vc_column_text][/vc_column_inner][vc_column_inner width=”1/6″][/vc_column_inner][/vc_row_inner][/vc_column][/vc_row][vc_row el_class=”social-info”][vc_column width=”1/6″][/vc_column][vc_column width=”2/3″][vc_row_inner][vc_column_inner width=”1/2″][vc_column_text][social_share_button themes=’theme1′][/vc_column_text][/vc_column_inner][vc_column_inner el_class=”youtube-inner-col” width=”1/2″][vc_column_text][likebtn theme=”youtube” lang=”auto” show_like_label=”0″ white_label=”1″ alignment=”right”][/vc_column_text][/vc_column_inner][/vc_row_inner][vc_row_inner el_class=”social-info-inner”][vc_column_inner width=”1/4″][vc_single_image image=”921″][/vc_column_inner][vc_column_inner width=”3/4″][vc_column_text]

Diego Pacheco

Ingeniero en Sitemas, MBA (Babson College). Desarrollador PHP/Java/JavaScript. Fundador & CEO de EpicStudio. Entusiasta de las tecnologías web (JavaScript, Vue, Laravel, AWS, Docker) Viajes, Negocios, Surf y Growth.[/vc_column_text][asvc_list_item icon_fontawesome=”fa fa-calendar-o” icon_size=”14px”]Programar una reunión[/asvc_list_item][/vc_column_inner][/vc_row_inner][/vc_column][vc_column width=”1/6″][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]

Recent Post

[/vc_column_text][lvca_posts_carousel posts_query=”size:3|order_by:rand|post_type:post” image_linkable=”true” image_size=”full” taxonomy_chosen=”post_tag” display_title=”true” display_post_date=”true” display_summary=”true” autoplay_speed=”3000″ animation_speed=”300″ display_columns=”3″ scroll_columns=”3″ gutter=”3″ tablet_display_columns=”2″ tablet_scroll_columns=”2″ tablet_gutter=”3″ tablet_width=”800″ mobile_display_columns=”1″ mobile_scroll_columns=”1″ mobile_gutter=”3″ mobile_width=”480″][vc_empty_space height=”20px”][/vc_column][/vc_row]