//app.js
var app = require('express')();
app.use('/test', require('./test'));
//test/index.js
var router = require('express').Router();
router.get('/test', function (req, res) {
res.status(200).send("success");
});
module.exports = routes;
为什么需要在app.use和router.get中指定路径?如果我只是简单地添加app.use('/', require('./test'));
,它似乎仍然可以正常工作。
答案 0 :(得分:1)
通过指定router.get('/test', function (req, res)
,您的处理程序方法将处理以/ test结尾的任何请求。取决于路由器的位置use()
。
app.use(withPath,[callback ...]
将中间件函数tests
安装在特定路径/test
因此,当基本请求url路径匹配时,将执行中间件test
。
答案 1 :(得分:1)
如果你改变了这个:
app.use('/test', require('./test'));
到此:
app.use('/', require('./test'));
然后你将拥有与使用./test
模块在/test
开头的路由上导出的中间件相同的功能,这样你就会体验到一切都会起作用,但是那个中间件还将处理不一定以/test
开头的所有其他路线,这取决于它的作用和工作原理,可能是也可能不是你想要的。
通过在app.use()
调用中使用某个路径,您可以限制仅加载到该路径的中间件。当您使用/
时,它就像是在说“每条路径”,因为每条路径都以斜杠开头 - 即使是不包含斜杠的URL所请求的路径仍然使用斜杠请求,例如使用斜杠。与HTTP / 1.1类似:
GET / HTTP/1.1
Host: localhost