Per*_*ive 6 post routes get node.js express
假设我有这POST条接收一些数据的路由。
app.post('/getData', function(req, res){
var retrievedData = req.body.exampleVariable;
// Send data to GET method
});
Run Code Online (Sandbox Code Playgroud)
我有这个GET呈现页面的方法,但需要我在该POST方法中检索到的数据
app.get('/displayData', function(req, res){
// Retrieve data from POST method and display it.
res.render('/examplePage.ejs', {retrievedData : req.retrievedData});
});
Run Code Online (Sandbox Code Playgroud)
将retrievedData变量从给定POST路线传递到GET路线的最佳方法是什么?
作为旁注,该res.render()方法似乎只适用于app.get()类型方法
您可以使用
app.post('/getData', function(req, res){
app.set('data', req.body.exampleVariable);
});
app.get('/displayData', function(req, res) {
res.render('/examplePage.ejs', {retrievedData : app.get('data')});
});
Run Code Online (Sandbox Code Playgroud)
但不保证返回的数据就是用户设置的数据,并且直到用户发出获取路由的请求后才会发送数据。这也使您的 Express 服务器成为有状态的,这会带来很多可能的缺点。
你可以在这里阅读一些相关内容
如果您希望您的应用程序是无状态的,您可以将您的应用程序传递到外部某个地方,例如独立于 Express 服务器的远程服务器(例如 mysql)。
如果它有任何用处,如果您愿意,您还可以在同一请求中发送和接收数据,正如在您的评论中这似乎是您想要做的。如果您有类似下面的内容,只要您确实向“/data”发出“POST”请求,它应该工作正常,考虑到它对于“GET”请求工作正常。
app.post('/data', function(req, res){
res.render('/examplePage.ejs', {
retrievedData: req.body.exampleVariable
});
});
Run Code Online (Sandbox Code Playgroud)
下面是一个示例 Express 应用程序,展示了它是如何工作的
form(method="post" action="data")
input(type="text" name="data" value="some data")
input(type="submit" value="submit")
Run Code Online (Sandbox Code Playgroud)
h1=data
Run Code Online (Sandbox Code Playgroud)
require('express')()
.use(require('body-parser').urlencoded({ extended: false }))
.get('/form', (req, res) => res.render('form.jade'))
.post('/data', (req, res) => res.render('data.jade', { data: req.body.data }))
.listen(8083);
Run Code Online (Sandbox Code Playgroud)
如果您启动服务器并转到“localhost:8083/form”,提交表单后,您将看到一个包含您发布的数据的渲染页面。
| 归档时间: |
|
| 查看次数: |
17923 次 |
| 最近记录: |