节点如何从表单中捕获数据?
How does node capture data from a form?
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文件中的提交按钮时,数据被附加到"/foo请求对象。
是否app.js因为调用了这个函数function(req, res)
而获得了请求对象?不知何故,我觉得我们正在提出新的要求。
还有第一个参数的用途是什么?也就是说,"app.post('/foo' "?
/*
* 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)
})
这是你的 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 功能。
现在我们通过调用它的构造函数来开始 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' 路由,所以当 '/foo' 路由with method post 被命中,它会进入它的函数体并且 运行 它:
app.post('/foo', urlencodedParser, function (req, res) {
res.send('welcome, ' + req.body.username)
}
在上面的函数中,我们将用户名与消息连接起来发送回响应,'username' 我们从请求正文中获得。
可以通过以下步骤实现此目的
- 创建一个 express 模块的对象
var app = express();
- 创建一个 body-parser 实例,它可以帮助我们在我们的节点应用程序中读取请求主体。
var parser = require('body-parser')
- 在我们的应用程序中使用解析器
app.use(bodyParser.json());
在这里您将获得 json 格式的请求正文
当用户提交表单时,我们在后台 运行ning 的节点应用程序使用 post 方法侦听 '/foo' 路由。
所以当使用方法 post 的 '/foo' 路由被命中时,它将转到它的函数体和 运行 它。
此函数正在发送带有用户名的响应(我们从请求正文中获得)和一条消息。
接下来是:-- [app.post('/foo' "] 的目的是什么
当用户提交表单时,我们在后台 运行ning 的节点应用程序使用 post 方法侦听 '/foo' 路由(服务器收到具有 /foo 的请求)。
所以当使用方法 post 的 '/foo' 路由被命中时,它将转到它的函数体和 运行 它。
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文件中的提交按钮时,数据被附加到"/foo请求对象。
是否app.js因为调用了这个函数function(req, res)
而获得了请求对象?不知何故,我觉得我们正在提出新的要求。
还有第一个参数的用途是什么?也就是说,"app.post('/foo' "?
/*
* 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)
})
这是你的 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 功能。 现在我们通过调用它的构造函数来开始 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' 路由,所以当 '/foo' 路由with method post 被命中,它会进入它的函数体并且 运行 它:
app.post('/foo', urlencodedParser, function (req, res) {
res.send('welcome, ' + req.body.username)
}
在上面的函数中,我们将用户名与消息连接起来发送回响应,'username' 我们从请求正文中获得。
可以通过以下步骤实现此目的
- 创建一个 express 模块的对象
var app = express();
- 创建一个 body-parser 实例,它可以帮助我们在我们的节点应用程序中读取请求主体。
var parser = require('body-parser')
- 在我们的应用程序中使用解析器
app.use(bodyParser.json());
在这里您将获得 json 格式的请求正文 当用户提交表单时,我们在后台 运行ning 的节点应用程序使用 post 方法侦听 '/foo' 路由。 所以当使用方法 post 的 '/foo' 路由被命中时,它将转到它的函数体和 运行 它。
此函数正在发送带有用户名的响应(我们从请求正文中获得)和一条消息。
接下来是:-- [app.post('/foo' "] 的目的是什么 当用户提交表单时,我们在后台 运行ning 的节点应用程序使用 post 方法侦听 '/foo' 路由(服务器收到具有 /foo 的请求)。 所以当使用方法 post 的 '/foo' 路由被命中时,它将转到它的函数体和 运行 它。