如何在app.use()Node jsexpress之后调用app.get()?将请求从app.use()传递到app.get


const express = require('express');
const app = express();
app.use('/', (req, res,next) => {
res.send('Bid Request GET');
});
app.get('/', (req, res) => {
res.send('Bid  T');
});
app.listen(3000, () => console.log('app listening on port 3000!'))

我是nodejs的初学者。当我运行代码时,它只显示app.use()响应,而不是app.get()响应。

我很困惑。我也尝试了next((方法,但不起作用。如何解决这个问题?

这背后的主要原因是因为您已经在这里发送了响应:

app.use('/', (req, res,next) => {
res.send('Bid Request GET');
});

每个请求只能发送一个响应。每个app.use中间件都是一个可以访问请求、响应和下一个参数的函数。当调用下一个函数时,它将执行当前中间件之后的中间件。

您还可以通过在请求或响应中创建变量,将数据从一个中间件传递到另一个中间件。例如

app.use('/', (req, res, next) => {
if(req.body.token !== 'abc') return res.sendStatus(503)
let someData = () => { .... SomeFunctionCode ... }
req.myVarible = someData // or res.myVariable = someData or anything
next()
})

但推荐的传递值的方式是通过res.locals.myVariable

以下是完整的示例:

app.use('/', (req, res, next) => {
if(req.body.token !== 'abc') return res.sendStatus(503)
let someData = () => { .... SomeFunctionCode ... }
req.locals.myVarible = someData 
next()
})
app.get('/', (req, res) => {
res.send(res.locals.myVariable)
})

相关内容

  • 没有找到相关文章

最新更新