Primero Comenzaremos Escogiendo nuestro Framework favorito, en este caso usaremos Express.
El primer caso es realizar las configuraciones iniciales:
En el lugar de donde deseamos crear nuestro proyecto ejecutaremos el comando
npm init -y
Esto creará un package.json, despues podremos inicializar un repositorio con
git init
Una vez hecho estos pasos instalaremos express con
npm i express
y realizaremos la configuración inicial de nuestro servidor de esta forma
const express = require('express')
const app = express()
const port=3000
app.get('/', (req, res) => {
res.send('Servidor express corriendo')
})
app.listen(port, () => {
console.log(`Servidor express corriendo en http://localhost:${port}`)
})
Al ejecutarlo nuestro servidor estará corriendo en el puerto que le hayamos asignado en este caso el puerto 3000
Ahora realizaremos los endpoints que se usarían en una biblioteca:
Primero creamos una Data inicial en memoria
let books = [
{id:1, title: 'El señor de los anillos', author: 'J.R.R. Tolkien' },
{ id:2, title: 'Harry Potter y la piedra filosofal', author: 'J.K. Rowling' },
{ id:3, title: 'Cien años de soledad', author: 'Gabriel García Márquez' }
];
let idCounter = 3;
después crearemos el enpoind para obtener una lista de los libros:
app.get('/books', (req, res) => {
res.json(
books
)
})
y posteriormente para obtener un libro por su id:
app.get('/books/:id', (req, res) => {
const bookId = parseInt(req.params.id)
const book = books.find(book => book.id === bookId)
if (book) {
res.json(book)
} else {
res.status(404).json({error: 'Libro no encontrado'})
}
})
Ahora el enpoint para crear un libro:
app.post('/books', (req, res) => {
const {title, author}= req.body
const newBook = {
id: idCounter++,
title,
author
}
books.push(newBook)
res.json(newBook)
})
y después codificaremos el endpoint de modificar un libro, esto lo haremos usando el ID que irá como parámetro en la URL
app.put('/books/:id', (req, res) => {
const bookId = parseInt(req.params.id)
const bookIndex = books.findIndex(book => book.id === bookId)
if (bookIndex !== -1) {
const { title, author } = req.body
books[bookIndex] = { id: bookId, title, author }
res.json({message: 'Libro actualizado'})
} else {
res.status(404).json({error: 'Libro no encontrado'})
}
})
y finalmente haremos el endpoint de eliminar un libro de nuestra lista en memoria
app.delete('/books/:id', (req, res) => {
const bookId = parseInt(req.params.id)
const bookIndex = books.findIndex(book => book.id === bookId)
if (bookIndex !== -1) {
books.splice(bookIndex, 1)
res.json({message: 'Libro eliminado'})
} else {
res.status(404).json({error: 'Libro no encontrado'})
}
})
Para realizar las pruebas de estos enpoints se recomienda usar la herramienta Postman