首页 > 解决方案 > 处理多个唯一的 Express JS 请求

问题描述

我有一个小型 Express JS api,我正在构建它来处理和处理来自浏览器的多个传入请求,并且在找出处理它们的最佳方法时遇到了一些麻烦。

用例是有一个表单,在任何给定时间可能有多达 30 人左右向 Express JS api 提交表单数据,然后 API 使用 axios 将此数据发布到某个地方,每个人都需要返回返回到提交数据的人的浏览器的响应,到目前为止我的端点是:

app.post('/api/process', (req, res) => {

  if (!req.body) {
    res.status(400).send({ code: 400, success: false, message: "No data was submitted" })
    return
  }

  const application = req.body.Application

  axios.post('https://example.com/api/endpoint', application)
        .then(response => {
          res.status(200).send({ code: 200, success: true, message: response })
        })
        .catch(error => {
          res.status(200).send({ code: 200, success: false, message: error })
        });

})

如果 John 和 James 将来自不同浏览器的表单数据提交到我的 Express JS api,然后转发到另一个 api,我需要各自的响应返回到各自的浏览器......

标签: javascriptnode.jsexpressaxios

解决方案


让我们为您明确一点,请求的响应只会发送给请求者,但是如果您需要发送流程请求并发送响应,例如hey i received your request and you can use another get route to get the result sometimes later,那么您需要确定您的意思是哪个工作。因此,您可以在服务器收到处理请求时生成一个 UUID,并将其作为响应发送回发送方,Hey i received your process request, you can check the result of process sometimes later and this UUID is your reference code. 然后您需要将UUID代码作为GET参数或查询参数传递,服务器会向您发送正确的结果。这也是您使用时的常用方式WebSocket。向服务器发送进程请求,服务器发回参考 UUID 代码,稍后服务器将进程结果发送到请求者的 websocket 并说Hey this is the result of that process with that UUID reference code.

我希望我说得够清楚。


推荐阅读