我有一个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
})