NodeJS: API CRUD simples con MySQL

En este artículo, crearé APIs CRUD simples en NodeJS, Express y MySQL. Aprenderemos cómo crear una API RESTful (crear, leer, actualizar, eliminar) en NodeJS.

Puntos finales de la API, para probar en Postman:

GET /learns: Obtiene todos los ‘learns’ almacenados en la base de datos.
GET /learns/{id}: Obtiene un usuario específico por ID.
POST /learns: Crea un registro.
PUT /learns/{id}: Actualiza un registro.
DELETE /learns/{id}: Elimina un registro.

Módulos para instalar y usar en este ejemplo:

express.js: Marco de trabajo web Express.
mysql: Controlador de Node.js para MySQL.
body-parser: Convierte los datos POST en el cuerpo de la solicitud.
nodemon: Reinicia automáticamente el servidor cuando hay cambios en el código.

1. Instala los módulos a utilizar en NodeJS.

Ejecuta ‘npm init’ para inicializar el archivo de origen, package.json. Selecciona el archivo de código js como index.js.

npm init

Instale estos paquetes, escriba el siguiente comando en Git Bash o su cmd favorito:

npm i –s express express-handlebars mysql body-parser

Instalando nodemon con el comando global:

npm i -g nodemon

Tendremos la siguiente fuente:

Carpeta de origen

Contenido del archivo Package.json:

{
“name”: “nodemysql”,
“version”: “1.0.0”,
“description”: “”,
“main”: “index.js”,
“scripts”: {
“test”: “echo \”Error: no test specified\” && exit 1″
},
“author”: “”,
“license”: “ISC”,
“dependencies”: {
“body-parser”: “^1.19.0”,
“express”: “^4.17.1”,
“express-handlebars”: “^5.3.0”,
“mysql”: “^2.18.1”
}
}

2. Base de datos MySQL

Crear base de datos aprende, con la tabla node_mysql_simple es tan simple como se muestra a continuación:

// Esquema: aprende, base de datos: node_mysql_simple

CREAR BASE DE DATOS aprende /*JUEGO DE CARACTERES PREDETERMINADO utf8 */;

CREAR TABLA node_mysql_simple (
id int(11) NO NULL AUTO_INCREMENT,
nombre varchar(45) POR DEFECTO NULO,
correo electrónico varchar(45) POR DEFECTO NULO,
course_id int(11) POR DEFECTO NULO,
CLAVE PRIMARIA (id)
) MOTOR = InnoDB JUEGO DE CARACTERES PREDETERMINADO = utf8;

Base de datos MySQL

3. Código del servidor de archivos Index.js

Utilice las bibliotecas necesarias que se han instalado en NodeJS y establezca una conexión con MySQL.

const mysql = require(‘mysql’);
const express = require(‘express’);
const bodyparser = require(‘body-parser’);
var app = express();

// Express server
app.use(bodyparser.json());

// MySQL connection details
var mysqlConnection = mysql.createConnection({
host: ‘localhost’,
user: ‘root’,
password: ”,
database: ‘learns’,
multipleStatements: true
});

mysqlConnection.connect((err) => {
if (!err) {
console.log(‘Connect success.’);
} else {
console.log(‘Connect faile: ‘ + JSON.stringify(err, undefined, 2));
}
});

const port = process.env.PORT || 8080;
app.listen(port, () => console.log(`Listen on port ${port}…`));

Ahora ejecuta el servidor web usando el comando: node index.js

node index.js

Y su servidor se ejecuta en el puerto 8080.

3.1. Insertar datos a la base de datos, método POST ruta

var urlencodedParser = bodyparser.urlencoded({ extended: false });

// Post route value get from params
app.post(‘/learns’, urlencodedParser, (req, res) => {
let name = req.body.name;
let email = req.body.email;
let course_id = req.body.course_id;

let sql = “INSERT INTO node_mysql_simple (name, email, course_id) VALUES (?, ?, ?)”;
mysqlConnection.query(sql, [name, email, course_id], (err, rows, fields) => {
if (!err) {
res.send(‘Inserted ID : ‘ + rows.insertId);
} else {
console.log(err);
}
})
});

– Prueba en Postman: ingrese datos simples con nombre, correo electrónico. id_curso.

Method Post

O puede usar MySQL para insertar varias filas de la matriz.

// Post route direct value
app.post(‘/learnDirect’, (req, res) => {
// Multi values
let values = [
[‘Amit’, ‘amit@gmail’, 1],
[‘Rishi’, ‘rishi@gmail’, 1],
[‘Akash’, ‘akash@gmail’, 1],
];

let sql = ‘INSERT INTO node_mysql_simple (name, email, course_id) VALUES ?’;
mysqlConnection.query(sql, [values], (err, rows, fields) => {
if (!err) {
res.send(‘Inserted ID ‘ + rows.insertId);
} else {
console.log(‘Error: ‘ + err);
}
});
});

3.2. Mostrar lista de datos y datos detallados con el método GET ruta


– Obtener lista de rutas:

// Get route list
app.get(‘/learns’, (req, res) => {
mysqlConnection.query(‘SELECT * FROM node_mysql_simple’, (err, rows, field) => {
if (!err) {
res.send(rows);
} else {
console.log(‘Query error: ‘ + err);
}
})
});

Después de insertar el segundo registro, tenemos los resultados, prueba en Postman:

Método Obtener, obtener lista de datos

– Obtener detalle de la ruta:

// Get route detail
app.get(‘/learns/:id’, (req, res) => {
mysqlConnection.query(‘SELECT * FROM node_mysql_simple WHERE id = ?’, [req.params.id], (err, row, field) => {
if (!err) {
res.send(row);
} else {
console.log(‘Query error: ‘ + err);
}
})
});

Método Obtener, obtener detalles sobre Postman

3.3. Actualizar datos con método PUT ruta

// Put route value get from params
app.put(‘/learns/:id’, urlencodedParser, (req, res) => {
let id = req.params.id;

let name = req.body.name;
let email = req.body.email;
let course_id = req.body.course_id;

let sql = “UPDATE node_mysql_simple SET name = ?, email = ?, course_id = ? WHERE id = ?”;
mysqlConnection.query(sql, [name, email, course_id, id], (err, rows, fields) => {
if (!err) {
res.send(‘Updated with ID : ‘+ id);
} else {
console.log(err);
}
})
});

Actualización del método

3.4. Eliminar datos con el método Eliminar

// Route Delete
app.delete(‘/learns/:id’, (req, res) => {
mysqlConnection.query(‘DELETE FROM node_mysql_simple WHERE id = ?’, [req.params.id], (err, rows, fields) => {
if (!err) {
res.send(‘Delete success ID: ‘ + req.params.id);
} else {
console.log(‘Delete error: ‘ + err);
}
})
});

– Quizás te interese: PHP – MVC CRUD y Conectarse a MySQL usando PDO

Deja un comentario