我试图弄清楚为什么使用expressjs
时路由不起作用,我有以下代码:
const express = require('express');
const app = express();
const router = express.Router();
app.get('/foo', function (req, res) {
res.send('Hello World.')
});
上面的代码运行良好,但是如果我用以下代码替换路由:
router.get('/foo', function(req, res, next) {
res.send('This is api.')
});
我得到:
使用express.Router()时无法获取/ foo
答案 0 :(得分:1)
您缺少以下内容:
app.use(router);
朝着代码的底部。您还需要
app.listen(3000);
或您要在其上运行应用程序的任何端口。
完整示例:
const express = require('express');
const app = express();
const router = express.Router();
router.get('/foo', function (req, res, next) {
res.send('This is api.')
});
app.use(router);
app.listen(3000);
答案 1 :(得分:1)
您需要正确配置每个路由器才能在Express中使用它。
您需要在根服务器文件(index.js
/ app.js
中向应用注册路由器。例如:
const express = require("express");
const app = express();
const fooRouter = require("./routes/foo");
app.use("/foo", fooRouter);
然后在routes/foo.js
中,您可以像以前一样使用代码(“但请注意,此时路由路径将相对于"/foo"
是相对的),但是您还需要导出路由器。例如:
const express = require("express");
const router = express.Router();
router.get("/bar", (req, res) => {
// ...
});
module.exports = router;
最终路线将为"/foo/bar"
。对于"/foo"
,您可以在"/"
内为foo.js
定义处理程序。