zarządzalne trasy zagnieżdżone ...
Chciałem uzyskać konkretny przykład wykonywania zagnieżdżonych tras w bardzo łatwy w zarządzaniu sposób w ekspresie 4 i był to najlepszy wynik wyszukiwania dla „tras zagnieżdżonych w ekspresie”. Oto interfejs API, który miałby wiele tras, które należałoby na przykład podzielić.
./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;
Przykład zagnieżdżenia w strukturze folderów
Zauważyłem kilka komentarzy na temat „zagnieżdżania struktury folderów”. Jest to zasugerowane, ale nie jest oczywiste, więc dodałem sekcję poniżej. Oto konkretny przykład zagnieżdżonej struktury folderów dla tras .
index.js
/api
index.js
/admin
index.js
/users
index.js
list.js
/permissions
index.js
list.js
To jest bardziej ogólny przykład działania węzła. Jeśli używasz „index.js” w folderach, podobnie jak „index.html” działa na stronach internetowych dla domyślnego katalogu, będzie to łatwe do skalowania organizacji w oparciu o rekursję bez zmiany punktów wejścia na kod. „index.js” jest domyślnym dokumentem, do którego uzyskuje się dostęp podczas korzystania z require w katalogu.
zawartość pliku index.js
const express = require('express');
const router = express.Router();
router.use('/api', require('./api'));
module.exports = router;
zawartość /api/index.js
const express = require('express');
const router = express.Router();
router.use('/admin', require('./admin'));
module.exports = router;
zawartość /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;
zawartość /api/admin/users/index.js
const express = require('express');
const router = express.Router();
router.get('/', require('./list'));
module.exports = router;
Prawdopodobnie jest tu kilka problemów SUCHYCH, ale dobrze nadaje się do hermetyzacji obaw.
FYI, niedawno wkręciłem się w actionhero i odkryłem, że jest to w pełni funkcjonalny z gniazdami i zadaniami, bardziej jak prawdziwy framework all-in-one, który przewraca paradygmat REST na głowę. Prawdopodobnie powinieneś to sprawdzić na nago w / express.