Nodejs 如何将参数从另一条路由传递到导出的路由?
Nodejs how to pass parameters into an exported route from another route?
假设我在 route1.js 中模块导出“/route1”,我如何将参数从 route2.js 中定义的“/route2”传递到此路由?
route1.js
module.exports = (app) => {
app.post('/route1', (req,res)=>{
console.log(req.body);
});
}
route2.js
const express = require('express');
const app = express();
//import route1 from route1.js
const r1 = require('./route1')(app);
app.post('/route2', (req, res) => {
//how to pass parameters?
app.use(???, r1) ?
})
简而言之,路线1的输出取决于路线2的输入。
您不会将参数从一条路线传递到另一条路线。每个路由都是一个单独的客户端请求。 http 本身是无状态的,每个请求都是独立的。
如果您描述您要解决的 real-world 实际问题是什么,我们可以帮助您使用各种工具来管理 http 中从一个请求到下一个请求的状态服务器。但是,我们真的需要知道真实世界的问题是什么才能知道最好的建议。
可用的通用工具有:
将 cookie 设置为第一个响应的一部分,并在 cookie 中包含一些数据。在从该客户端发送的下一个请求中,先前的 cookie 将与其一起发送,以便服务器可以看到该数据是什么。
创建一个server-sidesessionobject(可能使用express-session)并在sessionobject。在第二个请求中,您可以访问 session object 以获取先前设置的数据。
Return 在第一个请求中将数据发送给客户端,并让客户端在第二个请求中通过查询字符串或表单字段或自定义 headers 发送回该数据.这将是在服务器上做事的真正无状态方式。任何需要的状态都保存在客户端中。
哪个选项会带来最佳设计,完全取决于您实际要解决的问题。
仅供参考,您永远不会像您在问题中显示的那样将一条路线嵌入另一条路线:
app.post('/route2', (req, res) => {
//how to pass parameters?
app.use(???, r1) ?
})
这样做是安装一个新的 app.use()
永久副本,每次您的 app.post()
路由被访问时,它对所有传入请求都有效。他们会永远积累。
假设我在 route1.js 中模块导出“/route1”,我如何将参数从 route2.js 中定义的“/route2”传递到此路由?
route1.js
module.exports = (app) => {
app.post('/route1', (req,res)=>{
console.log(req.body);
});
}
route2.js
const express = require('express');
const app = express();
//import route1 from route1.js
const r1 = require('./route1')(app);
app.post('/route2', (req, res) => {
//how to pass parameters?
app.use(???, r1) ?
})
简而言之,路线1的输出取决于路线2的输入。
您不会将参数从一条路线传递到另一条路线。每个路由都是一个单独的客户端请求。 http 本身是无状态的,每个请求都是独立的。
如果您描述您要解决的 real-world 实际问题是什么,我们可以帮助您使用各种工具来管理 http 中从一个请求到下一个请求的状态服务器。但是,我们真的需要知道真实世界的问题是什么才能知道最好的建议。
可用的通用工具有:
将 cookie 设置为第一个响应的一部分,并在 cookie 中包含一些数据。在从该客户端发送的下一个请求中,先前的 cookie 将与其一起发送,以便服务器可以看到该数据是什么。
创建一个server-sidesessionobject(可能使用express-session)并在sessionobject。在第二个请求中,您可以访问 session object 以获取先前设置的数据。
Return 在第一个请求中将数据发送给客户端,并让客户端在第二个请求中通过查询字符串或表单字段或自定义 headers 发送回该数据.这将是在服务器上做事的真正无状态方式。任何需要的状态都保存在客户端中。
哪个选项会带来最佳设计,完全取决于您实际要解决的问题。
仅供参考,您永远不会像您在问题中显示的那样将一条路线嵌入另一条路线:
app.post('/route2', (req, res) => {
//how to pass parameters?
app.use(???, r1) ?
})
这样做是安装一个新的 app.use()
永久副本,每次您的 app.post()
路由被访问时,它对所有传入请求都有效。他们会永远积累。