【问题标题】:Process multiple unique Express JS requests处理多个唯一的 Express JS 请求
【发布时间】:2020-06-04 09:09:36
【问题描述】:

我正在构建一个小型 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,我需要各自的响应返回到各自的浏览器...

【问题讨论】:

  • 这是隔离的,没有干扰,响应会自动发送到正确的发件人代理,这是HTTPexpress中的默认行为。
  • 酷,我唯一关心的是作为更大设置的一部分,我会将 POST 更改为:/api/process/:id 然后有一个 GET 端点,这意味着用户可以重新加载他们的页面(本地存储在浏览器中的 ID)意味着一旦重新加载,他们就可以使用他们的 ID 从端点获取响应

标签: javascript node.js express axios


【解决方案1】:

让我们为您明确,请求的响应只会发送给请求者,但是如果您需要发送处理请求并发送响应,例如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 代码作为GETparam 传递或查询参数和服务器向您发送正确的结果。 这也是您使用WebSockettoo 时的常用方式。向服务器发送一个进程请求,服务器发回一个参考 UUID 代码,稍后服务器将进程结果发送到请求者的 websocket 并说Hey this is the result of that process with that UUID reference code.

希望我说得够清楚。

【讨论】:

    猜你喜欢
    • 2018-09-25
    • 2021-08-12
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多