节点如何从表单捕获数据?

时间:2019-02-05 06:19:55

标签: node.js post body-parser

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'”?

3 个答案:

答案 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)

可以通过以下步骤实现

  1. 创建Express模块​​的对象         var app = express();
  2. 创建一个body-parser实例,以帮助我们在节点应用程序中读取请求正文。 var parser = require('body-parser')
  3. 在我们的应用中使用解析器 app.use(bodyParser.json()); 在这里,您将获得json格式的请求正文
  4. 当用户提交表单时,在后台运行的我们的节点应用程序将使用post方法监听“ / foo”路由。 因此,当使用方法post的'/ foo'路由被点击时,它将转到它的函数体并运行它。

  5. 此函数使用用户名(我们从请求主体获得)将响应发送回一条消息。

下一个是:-[app.post('/ foo'“]的目的是什么   当用户提交表单时,在后台运行的我们的节点应用程序使用post方法监听“ / foo”路由(服务器收到具有/ foo的请求)。   因此,当使用方法post的'/ foo'路由被点击时,它将转到它的函数体并运行它。