ejs文件中的相关行:
<form action="/foo" method="post">
app.js文件:
var express = require('express')
var bodyParser = require('body-parser')
// I'm having trouble understanding this line
app.post('/foo', urlencodedParser, function (req, res) {
res.send('welcome, ' + req.body.username)
})
当我们单击ejs文件中的Submit按钮时,数据将附加到“ / foo请求对象”。
由于调用了此函数function(req, res)
,app.js是否可以访问请求对象?在某种程度上,我觉得我们正在提出一个新请求。
第一个参数的目的是什么?即“ app.post('/ foo'”?
答案 0 :(得分:1)
这是您的app.js在端口3000上监听
var express = require('express')
var app = express();
var bodyParser = require('body-parser')
app.post('/foo', urlencodedParser, function (req, res) {
res.send('welcome, ' + req.body.username)
});
//starting server
app.listen('3000',function(){
console.log("App started on port 3000.");
});
在这里,您将express实例存储在express变量中,它将具有所有express功能。 现在我们通过调用它的构造函数来开始表达,在下面的行中完成。
var app = express();
在下面,我们正在创建body-parser的实例,这有助于我们在节点应用程序中读取请求正文。
var bodyParser = require('body-parser')
现在我们像这样在我们的应用程序中使用body-parser:
app.use(bodyParser.json())
在上一行中,我们以json格式解析请求正文,以便我们可以以json格式访问请求正文。
现在,当用户提交表单(例如此表单)之后,应用变量将在某个端口(例如3000)上侦听:
<form action="/foo" method="post">
对于上述形式,当用户提交时,并且在后台我们已经启动了节点应用程序,它将通过“ post”方法侦听“ / foo”路由,因此使用方法post的“ / foo”路由为点击,它将转到其功能主体并运行它:
app.post('/foo', urlencodedParser, function (req, res) {
res.send('welcome, ' + req.body.username)
}
在上述功能中,我们将响应返回的用户名与一条消息(用户从请求正文获得的“用户名”)连接起来。
答案 1 :(得分:0)
/*
* POST request (when server receive a request from the client, normally used for
* inserting data into the storage system
*/
// app.post('foo', ...) is an endpoint whenever a server receives a request having '/foo' in the last e.g. http://localhost:3000/foo, the below function do some tasks
app.post('/foo', urlencodedParser, function (req, res) { // Route handler having /foo in the end of the URL
res.send('welcome, ' + req.body.username)
})
答案 2 :(得分:0)
可以通过以下步骤实现
var app = express();
var parser = require('body-parser')
app.use(bodyParser.json());
在这里,您将获得json格式的请求正文当用户提交表单时,在后台运行的我们的节点应用程序将使用post方法监听“ / foo”路由。 因此,当使用方法post的'/ foo'路由被点击时,它将转到它的函数体并运行它。
此函数使用用户名(我们从请求主体获得)将响应发送回一条消息。
下一个是:-[app.post('/ foo'“]的目的是什么 当用户提交表单时,在后台运行的我们的节点应用程序使用post方法监听“ / foo”路由(服务器收到具有/ foo的请求)。 因此,当使用方法post的'/ foo'路由被点击时,它将转到它的函数体并运行它。