Instale los módulos Sequelize CLI, Sequelize Auto y Express Generator de forma global, con:
npm install -g sequelize-cli sequelize-auto express-generator mysql2
Desde la línea de comandos, utilice el comando express con:
express --view=ejs rest_api
Acceda a la carpeta del proyecto, instale las dependencias y levante el servidor, con:
cd rest_api
npm install
SET DEBUG=rest_api:\* & npm start
En el navegador, acceda al URL http://localhost:3000
y compruebe la respuesta predeterminada.
Desde la línea de comandos en la carpeta del proyecto, instale Sequelize y el conector para MySQL para el proyecto, con:
npm install --save sequelize mysql2
Desde la línea de comandos en la carpeta del proyecto, genere los archivos de configuración de Sequelize, con:
sequelize init
Desde la línea de comandos en la carpeta del proyecto, reconstruya los modelos con las credenciales de acceso y el esquema de la base de datos, con:
sequelize-auto -h 127.0.0.1 -d northwind -u root -x root -p 3306
Modifique el archivo config/config.json
, en el ambiente development, con los datos de conexión con el motor de bases de datos.
{
"development": {
"username": "root",
"password": "root",
"database": "northwind",
"host": "127.0.0.1",
"dialect": "mysql"
},
...
Cree el archivo manejador de rutas routes/suppliers.js
con los controladores para los verbos HTTP GET
, POST
, PUT
y DELETE
.
var express = require('express');
var router = express.Router();
const { Sequelize, Op } = require('sequelize');
const Suppliers = require('../models').suppliers;
router.get('/findAll', function(req, res, next) {
res.send("GET All")
});
router.get('/findById/:id', function(req, res, next) {
res.send("GET By Id")
});
router.post('/save', function(req, res, next) {
res.send("POST")
});
router.put('/update/:id', function(req, res, next) {
res.send("PUT")
});
router.delete('/delete/:id', function(req, res, next) {
res.send("DELETE")
});
module.exports = router;
Modifique el archivo app.js
con el registro del archivo manejador de rutas routes/suppliers.js
a la ruta /suppliers
...
var suppliersRouter = require('./routes/suppliers');
var app = express();
app.use('/users', ... );
app.use('/suppliers', suppliersRouter);
...
Reinicie el servidor, con:
SET DEBUG=rest_api:\* & npm start
Utilice el workspace público de Postman para comprobar la respuesta para cada tipo de petición.
Complete el controlador para el verbo POST con la ruta save
:
...
router.post('/save', function(req, res, next) {
let {SupplierName, ContactName, Address, City, PostalCode, Country, Phone} = req.body;
Suppliers.create({
SupplierName: SupplierName,
ContactName: ContactName,
Address: Address,
City: City,
PostalCode: PostalCode,
Country: Country,
Phone: Phone
})
.then(data => {
res.json(data);
})
.catch(error => res.status(400).send(error))
});
...
Complete el controlador para el verbo GET con la ruta findById
:
...
router.get('/findById/:id', function(req, res, next) {
let id = parseInt(req.params.id);
Suppliers.findOne({
where: {
[Op.and]: [
{SupplierID: id}
]
}
})
.then(data => {
res.json(data);
})
.catch(error => res.status(400).send(error))
});
...
Complete todos controladores de acuerdo con el tutorial Express - REST II.
Reinicie el servidor y compruebe la respuesta con Postman.
Versiona local y remotamente el repositorio rest_api.
#REST #API what is it?
— Terrasoft Ltd (@Terrasoft_ltd) December 6, 2023
Representational State Transfer
This means that when a #client requests a resource using a REST API, the #server transfers back the current state of the resource in a standardized representation pic.twitter.com/xCFXw9cQFZ
En ExpressJS se encuentra la referencia del API, guías y tutoriales.
rest api, orm, crud, verbos HTTP, estados HTTP