Express JS(节点):向路由添加前缀不起作用
Express JS (Node): adding the prefix to routes is not working
我正在使用 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;
Cannot GET /api/auth
出现此错误是因为应用程序无法在任何地方匹配此路由,因为在中间件中 app.get
我们不会像这样调用。您需要为此创建一个路由处理程序,然后 express 的路由机制将传递给路由文件中的正确处理程序。
一开始尽量简单:
let express = require('express');
let app = express();
const apiRouter = express.Router();
apiRouter.get('/auth', (req, 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`);
});;
我正在使用 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;
Cannot GET /api/auth
出现此错误是因为应用程序无法在任何地方匹配此路由,因为在中间件中 app.get
我们不会像这样调用。您需要为此创建一个路由处理程序,然后 express 的路由机制将传递给路由文件中的正确处理程序。
一开始尽量简单:
let express = require('express');
let app = express();
const apiRouter = express.Router();
apiRouter.get('/auth', (req, 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`);
});;