Я использую Экспресс 4 сервера для Node.jsexpress.Router() против app.get
Существует маршрутизатор запеченные в Экспресс так:
в app.js
var router = express.Router();
app.use(router);
app.use('/users', usersRoutes);
в userRoutes.js:
var router = express.Router();
router.get('/', function (req, res, next) {
}
router.get('/:user_id', function (req, res, next) {
}
router.post('/:user_id', function (req, res, next) {
}
router.put('/:user_id', function (req, res, next) {
}
router.delete('/:user_id', function (req, res, next) {
}
module.exports = router;
, но мне очень сложно найти надежную документацию для этого типа маршрутизатора в Интернете. Существует гораздо больше документации для старого стиля использования app.get, app.post, app.put, app.delete и т. Д. Одна из наиболее запутанных вещей заключается в том, что первый аргумент (путь маршрута), по-видимому, требует, чтобы мы как программисты разделим аргумент app.use с помощью методов router.get/post/put/delete.
Например:
app.use('/users', usersRoutes);
... это означает, что все маршруты в usersRoutes уже невидимую '/users'
в начале пути - что-то я не уверен, что мне нравится еще. Это означает, что в usersRoutes.js:
var router = express.Router();
router.get('/users/:user_id', function (req, res, next) { //WRONG!!
}
router.get('/:user_id', function (req, res, next) { //RIGHT
}
Это немного сбивает с толку, но, возможно, что-то я мог оценить с более длинными путями.
Учитывая отсутствие документации для этого express.Router - я предполагаю, что это не самый предпочтительный способ, но возможно ли создать надежный бэкэнд RESTful с express.Router - и у него есть все основные HTTP-глаголы, присоединенные к Это?
Еще одна непонятная вещь: ----> в app.js у нас есть экземпляр маршрутизатора app.use(express.Router())
- как этот экземпляр маршрутизатора взаимодействует с другими? Не имеет никакого смысла на первый взгляд.
Ссылка на экспресс-документацию API: http://expressjs.com/api .html – aadarshsg
спасибо, но это не очень конструктивно. Например, одна проблема с express.Router заключается в том, что app.params, похоже, не работают с ним. И на самом деле не существует явного выражения express.params или router.params. –
в соответствии с этим https://scotch.io/tutorials/learn-to-use-the-new-router-in-expressjs-4 есть функция router.params, но в целом это не очень понятно, как использовать express.Router() несколько раз или даже один раз в приложении Express –