1

Tutorial para Crear un CRUD de una Biblioteca

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

Escribe tu comentario
+ 2