如何在服务器上的两个'app.post'方法之间传递数据?(节点/快速)



我有一个express服务器,它接收包含json.post。我需要使用来自初始.post的数据来调用不同的API。

如何传递从一个API调用接收的数据,并在不同的API调用中使用它?

这是代码,这是API调用链的一部分,具有更多的逻辑,但为了清楚起见,我在这里对其进行了简化。

服务器接收数据:

app.post("/pay", (req, res) =>{
const userInput = req.body.userInput
}

不同的API需要使用userInput:

app.post("/reply", (req, res) =>{
console.log(userInput)}

有什么想法吗?

如果您想在同一服务器上调用多个函数,只需将它们注册为连续中间件即可。中间件按从左到右的顺序调用。使用next()调用下一个处理程序。

app.post('/pay', handler1, handler2....)

在进行此操作时,您通常会发现提取处理程序(通常称为控制器(非常有用,这样它们就可以进行单元测试并在其他地方调用:

示例控制器:

const makePayment = (req, res, next) => {
// handler logic
}
const createUser = (req, res, next) => {
// handler logic
}
module.exports = {
makePayment,
createUser
}

路由器:

import Controllers from '<path to controllers>'
app.post('/pay', Controllers.makePayment, Controllers.createUser)

只要它们可以串行执行,这将起作用。如果功能相互依赖(例如需要另一个功能的结果(,您可以提取这些功能并直接调用它们:

import { myMethod } from <path to method>
app.post('/post', (req, res, next) => {
myMethod(req.body.userInput)
})

如果您从不同的服务器调用API,那么在请求处理程序中,您可以使用选择的http客户端将请求从服务器发送到其端点。

以下是使用axios:的示例

app.post('/pay', async (req, res, next) => {
const data = await axios.post('their_endpoint', {
data: req.body.userInput
})
// rest of handler
})

相关内容

最新更新