rutas anidadas manejables ...
Quería un ejemplo específico de hacer rutas anidadas de una manera muy manejable en express 4 y este fue el principal resultado de búsqueda para "rutas anidadas en express". Aquí hay una API que tendría muchas rutas que deberían dividirse, por ejemplo.
./index.js:
var app = require('express')();
// anything beginning with "/api" will go into this
app.use('/api', require('./routes/api'));
app.listen(3000);
./routes/api/index.js:
var router = require('express').Router();
// split up route handling
router.use('/products', require('./products'));
router.use('/categories', require('./categories'));
// etc.
module.exports = router;
./routes/api/products.js:
var router = require('express').Router();
// api/products
router.get('/', function(req, res) {
res.json({ products: [] });
});
// api/products/:id
router.get('/:id', function(req, res) {
res.json({ id: req.params.id });
});
module.exports = router;
Ejemplo de anidamiento en estructura de carpetas
Noté algunos comentarios sobre "estructura de carpetas de anidación". Está implícito en esto, sin embargo, no es obvio, así que agregué la sección a continuación. Aquí hay un ejemplo específico de una estructura de carpetas anidadas para rutas .
index.js
/api
index.js
/admin
index.js
/users
index.js
list.js
/permissions
index.js
list.js
Este es más un ejemplo general de cómo funciona el nodo. Si usa "index.js" en carpetas de forma similar a cómo funciona "index.html" en las páginas web para un directorio predeterminado, será fácil escalar su organización en función de la recursividad sin cambiar sus puntos de entrada al código. "index.js" es el documento predeterminado al que se accede cuando se requiere require en un directorio.
contenido de index.js
const express = require('express');
const router = express.Router();
router.use('/api', require('./api'));
module.exports = router;
contenido de /api/index.js
const express = require('express');
const router = express.Router();
router.use('/admin', require('./admin'));
module.exports = router;
contenido de /api/admin/index.js
const express = require('express');
const router = express.Router();
router.use('/users', require('./users'));
router.use('/permissions', require('./permissions'));
module.exports = router;
contenido de /api/admin/users/index.js
const express = require('express');
const router = express.Router();
router.get('/', require('./list'));
module.exports = router;
Posiblemente hay algunos problemas SECOS aquí, pero se presta bien para encapsular las preocupaciones.
Para su información, recientemente me metí en actionhero y he encontrado que tiene todas las funciones con enchufes y tareas, más como un verdadero marco todo en uno que cambia el paradigma REST en su cabeza. Probablemente deberías echarle un vistazo antes de desnudarte con express.