我有站点存根,其中路由设置在2个位置。
首先在app.js
:
...
var index = require('./routes/index');
var users = require('./routes/users');
...
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', index);
app.use('/users', users);
...
使用use
设置了一些内容。接下来是内部引用的脚本,例如index.js
:
var express = require('express');
var router = express.Router();
var fs = require('fs');
var path = require('path');
var config = require('../config');
/* GET home page. */
router.get('/', function(req, res) {
var data = {};
...
假设我希望使用来自Express Routing doc的信息。我应该在哪里放置路由,比如/users/:userId/books/:bookId
?
在文档中,get
针对的是app
,而在我的存根中,get
会针对router
进行调用,并且会以两步方式进行调用。
在哪里挂钩?
答案 0 :(得分:2)
在文档中get
针对app
进行调用,因为它们在app.js
文件中设置了端点。在index.js
中,您使用module.exports = router;
(应用程序的路由器)从文件返回路由器。现在在app.js
文件中说
app.use('/', index);
app.use('/users', users);
这些是路线。您是说index
文件中的所有端点都以/
开头,而users
文件中的端点都以/users
开头。
因此路由/users/:userId/books/:bookId
必须在users.js
文件中,如此
router.get('/:userId/books/:bookId', function(req, res, next) {
// do something
});
答案 1 :(得分:1)
如果要处理此路由 - /users/:userId/books/:bookId
,则需要在routes/users.js
文件中编写以下处理程序。
router.get('/:userId/books/:bookId', function(req, res) {
var data = {};
});//get route
基本上,在app.js中,您根据其第一部分对网址进行分类,例如: users
。因此,以/users
开头的所有路由都将由您的routes/users.js
类处理。所有其他路由将由routes/index.js
处理,因为它被定义为处理/
(没有/ users,/ admin等,因此users.js
未处理的所有路由都可以在这处理。)
此外,在这些路径处理程序文件中,您定义了一个router
对象,向其添加所有路径处理程序并将其导出到底部。因此,当您使用这些文件时,需要使用router
,而app.js
可以直接使用app.get()
等。