const express = require('express'); const mysql = require('mysql'); const morgan = require('morgan'); const bodyParser = require('body-parser'); const app = express(); console.log('Connexion en cours...'); // Configuration de la BDD. const connection = mysql.createConnection({ host: 'localhost', user: 'root', password: '********', database: 'Portfolio' }); // Connexion à la BDD. connection.connect(function (err) { if (err) { console.log(err); } else { console.log(`Connecté.`); } }); // Middleware : s'éxécute avant les fonctions de routing. app.use(morgan('dev')); // Debug en console avec morgan (dev) app.use(bodyParser.json()); // pour analyser application/json app.use(bodyParser.urlencoded({ extended: true })); // pour analyser application/x-www-form-urlencoded // Route de base. app.get('/', (req, res) => { res.send("Bienvenue sur l'API de Lucas ROBIN !"); }); // GET : Lister toute les technologies. app.get('/tools/all', (req, res) => { sql = 'SELECT tools.name, tools.description FROM tools'; // Questionne la BDD. connection.query(sql, function (error, results) { if (error) throw error; res.json(results); }); }); // POST : Lister toute les technologies. ( WITH SECURITY ) app.post('/tools/all', (req, res) => { // Si la clé d'accès passée dans le body est correct... if (req.body.key === "*******") { sql = 'SELECT tools.name, tools.description FROM tools'; connection.query(sql, function (error, results) { if (error) throw error; res.json(results); }); } else { res.json(hasError("Clés d'accès invalide ou introuvable...")) } // res.send((req.body)); // Contenu du Body en methode post. }); // GET : Lister une technologie. app.get('/tools/:id', (req, res) => { let params = req.params; // Paramètre(s) passé(s) dans l'URL. let inserts; // Variables à insérer dans la requête SQL. let sql; // Requête SQL. if (params.id) { inserts = [params.id]; sql = 'SELECT tools.name, tools.description FROM tools WHERE tools.id = ?'; sql = mysql.format(sql, inserts); // Prépare la requête SQL. // Questionne la BDD. connection.query(sql, function (error, results) { if (error) { res.json(hasError(error)); } else { res.json(isSuccess(results)); } }); } else { res.json(hasError(`Cette requête attend un paramètre ID.`)); } }); // Port d'écoute app.listen(3000); //------------------------------------------------------------------------------ function isSuccess(result) { return { status: 'success', result: result } } function hasError(message) { return { status: 'error', message: message } } //------------------------------------------------------------------------------