керовані вкладені маршрути ...
Я хотів конкретного прикладу виконання вкладених маршрутів дуже керованим способом у експресі 4, і це був головний результат пошуку "вкладених маршрутів у експресі". Ось API, який би мав багато маршрутів, які потрібно розбити, наприклад.
./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;
Приклад введення в структуру папок
Я помітив деякі коментарі щодо "структури папки". Мається на увазі це, однак не очевидно, тому я додав розділ нижче. Ось конкретний приклад структури вкладеної папки для маршрутів .
index.js
/api
index.js
/admin
index.js
/users
index.js
list.js
/permissions
index.js
list.js
Це більше загальний приклад того, як працює вузол. Якщо ви використовуєте "index.js" у папках аналогічно тому, як працює "index.html" на веб-сторінках за замовчуванням каталогу, це буде легко масштабувати вашу організацію на основі рекурсії, не змінюючи вхідні точки на код. "index.js" - це документ за замовчуванням, до якого звертаються при використанні вимагати в каталозі.
вміст index.js
const express = require('express');
const router = express.Router();
router.use('/api', require('./api'));
module.exports = router;
вміст /api/index.js
const express = require('express');
const router = express.Router();
router.use('/admin', require('./admin'));
module.exports = router;
вміст /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;
вміст /api/admin/users/index.js
const express = require('express');
const router = express.Router();
router.get('/', require('./list'));
module.exports = router;
Тут, можливо, є деякі проблеми із сухим станом, але це добре піддається укладанню проблем.
FYI, нещодавно я потрапив у actionhero і виявив, що це повнофункціональний ж / сокет і завдання, більше схожі на справжню рамку все-в-одному, перегортаючи парадигму REST на голові. Ви, ймовірно, повинні перевірити це над тим, як вийти голий в / експрес.