Hola en esta ocasión te daremos una introducción para generar un API para poder administrar tu propia liga de Futbol 7.
Para poder iniciar podemos imaginarnos por donde empezar, como hay varias características en este tema, vamos a utilizar uno particular, el agregar equipos y sus jugadores a esos equipos.
Si nunca haz hecho un programa con Node, te ayudare a hacerlo muy facil y rapido.
Con Node ya instalado en nuestro equipo, crearemos una carpeta en este caso la mia sera fut7. (Tu puedes usar el nombre que te guste.)
Puedes darle clic derecho y abrir la carpeta con Visual Studio Code.
Una vez estemos en Visual Studio Code. Podemos abrir una terminal integrada, presionando Ctrl + j y ejecutar el siguiente comando:
npm init -y
🔹Si queremos que nuestro proyecto tenga un control de versiones y contamos con GIT en nuestro equipo podemos ejecutar el siguiente comando. (Este paso es totalmente opcional, pero creeme que esto te ayudara mucho mas adelante)
git init
npm i express
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req,res) => {
res.send('Hola soy tu primer programa con Node y Express')
})
app.listen(port, () => {
console.log(`Ejecutando en http://localhost:${port}`);
})
Una vez guardado el codigo ejecutaremos el comando
nodeapp.js
Para que inicie nuestro programa.
Ingresamos a http://localhost:3000/ en nuestro navegador y nos desplegara lo siguiente.
Felicidades 🎉🎉
Haz creado tu primer programa en Node y Express.
Demos inicio a crear nuestro crud de equipos y jugadores.
Para iniciar, colocaremos data inicial con la que podamos hacer pruebas y empezar a familiarizarnos.
let equipos = [
{id: 1, nombre: 'BrodeVG'},
{id: 2, nombre: 'Plameiras'},
{id: 3, nombre: 'Toros'},
]
let indexEQ = 3;
let jugadores = [
{id: 1, nombre: 'Aftasher', idEquipo: 1},
{id: 2, nombre: 'Adrohayabusa', idEquipo: 1},
{id: 3, nombre: 'Joss', idEquipo: 2},
{id: 4, nombre: 'Canelo', idEquipo: 3},
{id: 5, nombre: 'Chucho', idEquipo: 2},
]
let indexJug = 5;
Aqui estamos usando arreglos de objectos para efectos practicos. Esto para evitar de momento una conexion a BD, claro con las limitantes que tendremos.
Ya que tenemos los datos comenzaremos a hacer cada endpoint, iniciaremos trayendo todos los equipos
Comenzaremos con los get:
app.get('/teams', (req,res) => {
res.json(equipos);
})
app.get('/players/:idTeam',(req,res) => {
let idTeam = req.params.idTeam;
let players = jugadores.filter(x => x.idEquipo == idTeam);
if(players.length > 0){
res.json(players)
}else{
res.status(404).send('No se encontraron coincidencias')
}
})
En el primer enpoint /teams traeremos todos los equipos registrados.
Para el endpoint /players/:idTeam nos devolvera todos los jugadores de un equipo especifico.
Continuaremos con los post:
app.post('/player',(req,res) => {
let {nombre,idEquipo} = req.body;
let nvoJug = {
id:indexJug++,
nombre: nombre,
idEquipo: idEquipo
}
jugadores.push(nvoJug);
res.json(nvoJug);
})
app.post('/team',(req,res) => {
let {nombre} = req.body;
let nvoEq = {
id:indexEQ++,
nombre: nombre
}
equipos.push(nvoEq);
res.json(nvoEq);
})
En los endpoint de tipo post player y team nos ayudaran a ingresar un nuevo elemento a nuestra lista.
Update: Para poder recibir un json en nuestro post tendremos que agregar al inicio del programa:
app.use(express.json())
Esto para que al momento de consumir el servicio por medio de un Rest client, pueda aceptar correctamente el JSON que le enviemos.
Continuaremos con los endpoint de edicion:
app.put('/player/:id',(req,res) => {
let idJug = req.params.id;
let indxJug = jugadores.findIndex(x => x.id == idJug);if(indxJug !== -1){
let {nombre, equipo} = req.body;
jugadores[indxJug] = {id: idJug, nombre, equipo}
res.json({mensaje: 'Jugador Actualizado'});
}else{
res.status(404).send('Jugador no encontrado');
}
});
app.put('/team/:id',(req,res) => {
let idEq = req.params.id;
let indxEq = equipos.findIndex(x => x.id == idEq);if(indxEq !== -1){
let {nombre} = req.body;
equipos[indxEq] = {id: idEq, nombre}
res.json({mensaje: 'Equipo Actualizado'});
}else{
res.status(404).send('Equipo no encontrado');
}
});
Dentro de estos endpoint se le colocara el id de busqueda, con el cual por medio de un json de entrada podran ingresar los datos a actualizar.
Y Finalizaremos con los endpoint de tipo delete:
app.delete('/player/:id',(req,res) =>{
let idJugadpr = req.params.id;
let inxJugador = jugadores.findIndex(x => x.id == idJugadpr);if(inxJugador !== -1){
equipos.splice(idJugadpr,1)
res.json({mensaje: 'Jugador Eliminado'});
}else{
res.status(404).send('Jugador no encontrado');
}
})
app.delete('/teams/:id',(req,res) =>{
let idEq = req.params.id;
let indxEq = equipos.findIndex(x => x.id == idEq);if(indxEq !== -1){
equipos.splice(idEq,1)
res.json({mensaje: 'Equipo Eliminado'});
}else{
res.status(404).send('Equipo no encontrado');
}
})
Con esto tenemos un ejemplo básico para hacer un CRUD.
Esperamos que te haya ayudado.
Suerte ☘️