Créez une API REST avec Node.js et Oracle 18c.

Dans ce didacticiel, nous allons expliquer comment créer une API REST avec node.js et Oracle 18c XE.

Photo de Nikolay Tarashchenko sur Unsplash

1. Installez et configurez la base de données Oracle 18c XE.

Téléchargez et installez Oracle 18c XE pour votre système d'exploitation.

Une fois l'installation terminée, ouvrez un shell bash et tapez les commandes suivantes:

//connect to oracle db
sqlplus  /  as  sysdba
//change container
ALTER  SESSION  SET  CONTAINER  =  xepdb1;
//check for the container
SHOW  con_name;
//unlock hr user change <PASSWORD> field with your password
ALTER  USER  hr  IDENTIFIED  BY  <PASSWORD>  ACCOUNT  unlock;
//connect to hr schema
connect hr/<PASSWORD> @xepdb1;
//query user tables
select table_name from user_tables;
Example output from the commads above

Si vous rencontrez des problèmes avec l'installation ou la connexion avec la base de données, consultez un article utile:

Comment déverrouiller un utilisateur HR (exemple de schéma) dans Oracle Database 18c

2. connectez-vous à Oracle 18c XE avec node.js

Créer un nouveau dossier:

mkdir nodeOracleRestApi

cd nodeOracleRestApi
npm init -y

npm i express
npm i oracledb

Créez un fichier avec le nom checkConnection.js et collez le code suivant:

Exécutez votre application de nœud:

node checkConnection.js

connected to database
close connection success

3.Créez votre application API Rest.

Créez un fichier avec le nom index.js et collez le code suivant:

3.1 Obtenez tous les employés.

Notre premier point de terminaison de l'API REST enverra tous les employés de la table hr.employees :

//GET request to fetch all employeess
http://localhost:3000/employees

//GET /employess
app.get('/employees', function (req, res) {
//fetch all employees from db and send it
selectAllEmployees(req, res);
})

async function selectAllEmployees(req, res) {
try {
connection = await oracledb.getConnection({
user: "hr",
password: password,
connectString: "localhost:1521/xepdb1"
});
console.log('connected to database');
let query = 'SELECT * FROM employees';
// run query to get all employees
result = await connection.execute(query);
} 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);
}
}
}

Exécutez votre code:

node index.js

3.2 Obtenez un employé avec le paramètre id.

Le deuxième point de terminaison de l'API REST enverra un employé de la table hr.employees avec le paramètre id :

//GET request to fetch /employee?id=<id employee>
http://localhost:3000/employee?id=101

//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);
})

async function selectEmployeesById(req, res, id) {
try {
connection = await oracledb.getConnection({
user: "hr",
password: password,
connectString: "localhost:1521/xepdb1"
});
let query = 'SELECT * FROM employees where employee_id=:id';
// run query to get employee with employee_id
result = await connection.execute(query, [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);
}
}
}

Exécutez votre code:

node index.js

4. Conclusion

Il s'agit d'un exemple d'application d'API REST qui se connecte à Oracle 18c XE avec Node.js et accepte deux requêtes http GET distinctes:

chercher tous les employés

GET / employés

chercher un employé avec id = <employee_id>

GET / employé? Id = <id_employé>

Vous pouvez télécharger l'exemple d'application depuis github:

https://github.com/petranb2/nodeOracleRestApi

Références:

  1. node.js
  2. Oracle 18c XE
  3. Cadre express
Aide-mémoire des expressions régulières dans Node.js Comment planifier des tâches Cron et définir des vérifications de l'état dans Node.js

Suggested posts

Recherche d'informations sur les noms de domaine

Un extrait de Small, Sharp Software Tools par Brian P. Hogan

Recherche d'informations sur les noms de domaine

Lorsque vous faites une demande à facebook.com, votre ordinateur recherche le nom de domaine pour traduire ce nom de domaine en une adresse IP afin que votre ordinateur puisse établir cette connexion.

Le mot D et le mot L dans UI Design. La langue compte. Ne soyez pas raciste.

Le mot D et le mot L dans UI Design. La langue compte. Ne soyez pas raciste.

Notre langue est un outil puissant qui peut façonner nos pensées, nos attitudes et nos actions. Même des termes apparemment inoffensifs peuvent perpétuer des préjugés et des stéréotypes nuisibles.

Related posts

Suivre n'importe qui avec juste un numéro de téléphone | Enquête OSINT

Suivre n'importe qui avec juste un numéro de téléphone | Enquête OSINT

Vous pouvez être un enquêteur OSINT, un joueur CTF ou simplement quelqu'un qui reçoit des appels de spam. Quelqu'un qui essaie de vérifier le numéro que vous avez vu dans une publicité.

L'art est-il toujours apolitique ?

L'art est-il toujours apolitique ?

Hier, nous avons fermé la porte du concours Eurovision de la chanson de cette année avec une grande finale scintillante et chaotique où la chanteuse suédoise Loreen a remporté le trophée, devenant la première femme à gagner deux fois et ramenant la couronne à la Suède 50 ans après qu'ABBA a remporté le concours. avec "Waterloo". Ils sont devenus l'un des plus grands groupes du canon de la musique pop.

les pronoms font super peur

Ça me frappe tout à coup, comme c'est si souvent le cas C'est à nouveau le milieu du chemin <Non, pas celui du Pacifique, toi marron, celui du carnaval> Chaque gros titre fort… ..

Comment sauver la planète et gagner de l'argent

Comment sauver la planète et gagner de l'argent

Combien de fois avez-vous jeté une bouteille en plastique, un bocal en verre, une canette en aluminium ou un paquet d'énergie verte sans réfléchir à deux fois ? Combien de fois avez-vous souhaité pouvoir obtenir quelque chose en échange de leur recyclage ? Si vous êtes comme la plupart des gens, la réponse est probablement plusieurs fois. Le recyclage est souvent perçu comme un tracas, une corvée ou un devoir qui n'apporte aucun bénéfice immédiat ou tangible.