javascript - 处理多个唯一的 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,我需要各自的响应返回到各自的浏览器......
解决方案
让我们为您明确一点,请求的响应只会发送给请求者,但是如果您需要发送流程请求并发送响应,例如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.
我希望我说得够清楚。
推荐阅读
- sql - SQL - 如何创建一个新表?
- node.js - 使用 should.js/Mocha 捕获错误
- azure-devops - 覆盖发布管道中的模板参数不起作用
- python-3.x - 为什么我在运行代码时得到“无”?不使用 def
- c# - IsoDateTimeConverter 忽略我指定的日期格式
- python - 如何执行另一个python文件然后关闭现有的?
- javascript - 使用手动控制时如何修复自动幻灯片放映的时间间隔
- java - 如何使用线程运行两个 JOptionPane
- python - “没有名为 openpyxl 的模块”,尽管安装了模块,但无法导入事件。我从来没有遇到过其他模块的这个问题
- java - 如何在 SpringBoot 2.0 应用程序中打印 spring 数据源值