CREAR FICHERO DE RUTAS CON NODEJS

En el post sobre como crear un servidor con NodeJS hay un ejemplo de una ruta usando Express, que para refrescar sería:

const express = require('express');
const app = express();
// Define una ruta básica
app.get('/', (req, res) => {
    res.send('¡Hola, mundo! Este es mi servidor con Express');
});

app.get('/despedida', (req, res) => {
    res.send('¡Adiós, mundo!');
});
// Define el puerto
const PORT = 3000;

// Inicia el servidor
app.listen(PORT, () => {
    console.log(`Servidor corriendo en http://localhost:${PORT}`);
});
Con este ejemplo si se pone en el navegador la url: "http://localhost:3000/", mostrará hola mundo '"¡Hola, mundo! Este es mi servidor con Express"', pero se pone en el navegador la url: "http://localhost:3000/despedida", mostrará hola mundo '"¡Adiós, mundo!"'.
Lo ideal es tener las rutas en un fichero aparte, como con las rutas en laravel.
Para crear un fichero de rutas en NodeJS y luego usarlas hay que hacer lo siguiente: Primero sería crear un fichero donde se almacenarán las rutas, por ejemplo, "/rutas/rutasProyecto.js", dicho fichero contendrá lo siguiente:

onst express = require('express');
const router = express.Router();

//Cargo el controlador

const articulosController = require("../controllers/articulos");

//Definir rutas
router.get('/list-articles',articulosController.getAllArticles);
router.get('/articleById/:id',articulosController.getArticleById);

//exportar rutas
module.exports = router;
Y para usar dichas rutas, tendremos que ir al fichero principal del proyecto de NodeJS y se hará lo siguiente:

//Rutas
const rutasNode =  require('./rutas/rutasProyecto');
app.use("/api",rutasNode);
En el ejemplo anterior se importa el fichero donde se encuentran las rutas. Luego con la linea "app.use("/api",rutasNode);" se añade el prefiero "api", o lo que se quiera, y con "rutasNode", se usarán las rutas definidas en ese fichero.
En el ejemplo del fichero de rutas hace referencia al "articulosController" que es una clase que hace de controlador y tiene varios métodos, en este ejemplo solo llama a "getAllArticles" y "getArticleById". Pongo el código de la clase de los articulos:

const fs = require("fs");
const path = require("path");
const Article = require('../models/articulo');

const ArticleController = {
  getImage(req, res) {

    let file = req.params.file;
    let filepath = "./uploads/images/" + file;
console.log(filepath);
    //comprobar si existe el fichero
    fs.stat(filepath, (error,exists) =>  {
   if (!error && exists){
  return res.sendfile(path.resolve(filepath));
   }else{

     return res.status(404).send({
  status: 'error',
  data: 'imagen no existe',
  file: req.file
     });
   }
    });
 
  }, 
  uploadImage(req, res) {

 let param = req.param.id;
 
 if (!req.file){
 return res.status(404).json({
     status: 'error',
     data: 'No se ha subido ningun archivo',
   });
 }
 const filepath = req.file.path;
 //obtiene la extension del sin punto
 const extension = path.extname(req.file.originalname).toLocaleLowerCase().replace(".",");

 const validExtension = ["jpg","jpeg","gif","png"];
 if (!validExtension.includes(extension)){
   //Borra el fichero subido
   fs.unlinkSync(filepath);
   return res.status(404).json({
     status: 'error',
     data: 'Archivo no es imagen',
   });
 }

 return res.status(200).json({
   status: 'success',
   data: 'todo bien',
   file: req.file
 });
  },  
  // Obtener todos los artículos
  async getAllArticles(req, res) {
    try {
 const articles = await Article.getAll();
 console.log('Artículos en la base de datos:');
 console.table(articles);
 return res.status(200).json({
   status: 'success',
   data: articles
 });
    } catch (err) {
 console.error('Error en getAllArticles:', err);
 return res.status(500).json({
   status: 'error',
   message: 'Error al obtener los artículos',
   error: err.message
 });
    }
  },

  // Obtener un artículo por ID
  async getArticleById(req, res) {
    const { id } = req.params;
    try {
 const article = await Article.getById(id);
 if (!article) {
   return res.status(301).json({
     status: 'error',
     message: `Artículo con ID ${id} no encontrado`
   });
 }
 console.log('Artículo encontrado:');
 console.table([article]);
 return res.status(200).json({
   status: 'success',
   data: article
 });
    } catch (err) {
 console.error('Error en getArticleById:', err);
 return res.status(500).json({
   status: 'error',
   message: 'Error al obtener el artículo',
   error: err.message
 });
    }
  }
};
module.exports = ArticleController;
En el ejemplo anterior hay más métodos pero solo nos interesan dos. Para probar con postman o con el navegador solo basta con poner las urls: "http://localhost:3977/api/articleById/10" y "http://localhost:3977/api/list-articles", como está definido en el ejemplo del fichero de rutas. Lo que ha cambiado es que ahora pone "api", o lo uqe se haya definido en "app.use("/api",rutasNode);"" y antes no se había puesto.