如何解决Express JS节点:向路由添加前缀不起作用
我正在使用 Node JS Express JS 框架构建 Web 应用程序。现在,我正在尝试为我的应用程序的所有路由添加一个前缀。但它不起作用。
我就是这样做的。
let express = require('express');
let app = express();
const apiRouter = express.Router()
apiRouter.use('/api',() => {
app.get('/auth',(req,res) => {
res.send("Auth route")
})
return app;
})
当我转到浏览器中的“/api/auth”时,我没有得到预期的响应。我收到以下错误。
Cannot GET /api/auth
我的代码有什么问题,我该如何修复?
解决方法
您需要使用 express.Router
https://expressjs.com/en/guide/routing.html#express-router
const router = express.Router();
router.get('/auth',(req,res) => {
res.send("Auth route");
});
apiRouter.use('/api',router);
,
这是因为 app.use
是将中间件(针对您为特定路径添加的特定请求)添加到您的请求中,并通过匹配到它的确切路径来响应。您可以阅读更多详细信息 here 这是一个非常详细的主题。
let express = require('express');
let app = express();
const apiRouter = express.Router();
//create route file which will handle the exact match for it;
const apiRouteHandler = require('path');
app.use('/api',apiRouteHandler)
示例apiRouteHandler
const express = require('express');
const router = express.Router();
router.get('/auth',function(req,res){
res.send('GET route on things.');
});
//export this router to use in our index.js
module.exports = router;
无法获取/api/auth
出现此错误是因为应用程序无法在任何地方匹配此路由,因为我们不会像这样调用中间件 app.get
。您需要为此创建一个路由处理程序,然后 express 的路由机制将传递给路由文件中的正确处理程序。
一开始尽量简单:
let express = require('express');
let app = express();
const apiRouter = express.Router();
apiRouter.get('/auth',res) => {
// handle GET /auth method
res.send("Auth route");
});
// register handle for any request with Endpoint like /api/* (api/"anything include auth")
app.use('/api',apiRouter);
app.listen(3000,() => {
console.log(`Server started on port`);
});;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。