介绍
通常,当您使用 Express构建应用程序时,您需要从用户那里获得信息,其中最流行的两种方法是URL参数和POST参数。
在本文中,您将了解如何使用Express从请求中获取URL参数和POST参数。
前提条件
要完成本教程,您将需要:
- Node.js 是本地安装的,您可以按照 如何安装 Node.js 和创建本地开发环境进行操作。 *下载和安装像 Postman这样的工具将需要发送 POST 请求
<$>[注]
**注:**此前,本教程建议使用req.param
。从 v4.11.0 开始,此教程还建议安装body-parser
。从 v4.16.0 开始,这不再是必要的。
本教程已通过 Node v15.4.0、npm v7.10.0 和 express v4.17.1 进行验证。
步骤1 - 设置项目
首先,打开终端窗口并创建一个新的项目目录:
1mkdir express-params-example
然后,导航到新创建的目录:
1cd express-params-example
在此时刻,您可以启动一个新的 npm 项目:
1npm init -y
接下来,您需要安装快递
包:
1npm install [email protected]
在此时刻,你有一个新的项目准备使用Express。
创建一个新的 server.js
文件,并使用代码编辑器打开它:
1[label server.js]
2const express = require('express');
3
4const app = express();
5const port = process.env.PORT || 8080;
6
7// routes will go here
8
9app.listen(port);
10console.log('Server started at http://localhost:' + port);
查看您的终端窗口并运行您的应用程序:
1node server.js
<$>[注] 每次编辑 `server.js 时,您将不得不重新启动节点服务器。
现在让我们创建两个路径来测试抓取参数。
步骤 2 – 使用req.query
与 URL 参数
「req.query」可用于检索 URL 参数的值。
考虑下面的例子:
1http://example.com/api/users?id=4&token=sdfa3&geo=us
此URL包含id
、token
和geo
(地理位置)的参数:
1id: 4
2token: sdfa3
3geo: us
用代码编辑器修复server.js
,并为req.query.id
,req.query.token
和req.query.geo
添加以下代码行:
1[label server.js]
2// ...
3
4// routes will go here
5// ...
6
7app.get('/api/users', function(req, res) {
8 const user_id = req.query.id;
9 const token = req.query.token;
10 const geo = req.query.geo;
11
12 res.send({
13 'user_id': user_id,
14 'token': token,
15 'geo': geo
16 });
17});
18
19app.listen(port);
20console.log('Server started at http://localhost:' + port);
当服务器运行时,使用URL http://localhost:8080/api/users?id=4&token=sdfa3&geo=us
在网页浏览器中或在邮局。
服务器将用user_id
,token
和geo
值回复。
步骤 3 – 使用req.params
与路线
「req.params」可用于从路径中获取值。
请参阅以下URL:
1http://localhost:8080/api/1
此 URL 包含「api」和「:version」的路線(「1」)。
用代码编辑器修复server.js
,并为req.params.version
添加以下代码行:
1[label server.js]
2// ...
3
4// routes will go here
5// ...
6
7app.get('/api/:version', function(req, res) {
8 res.send(req.params.version);
9});
10
11app.listen(port);
12console.log('Server started at http://localhost:' + port);
当服务器运行时,使用URL http://localhost:8080/api/1
在网页浏览器中或与邮政员一起。
服务器将用版本
值回复。
步骤 4 – 使用.param
与路由处理器
接下来,您正在使用 Express .param
函数来捕捉特定参数,这被认为是中间件,并且在呼叫路线之前会运行。
这可以用于验证(例如检查用户是否存在)或获取有关该用户或项目的重要信息。
请参阅以下URL:
1http://localhost:8080/api/users/sammy
此URL包含用户
和名称
(Sammy
)的路线。
用代码编辑器修复server.js
,并添加以下代码行以更改名称
:
1[label server.js]
2// ...
3
4app.param('name', function(req, res, next, name) {
5 const modified = name.toUpperCase();
6
7 req.name = modified;
8 next();
9});
10
11// routes will go here
12// ...
13
14app.get('/api/users/:name', function(req, res) {
15 res.send('Hello ' + req.name + '!');
16});
17
18app.listen(port);
19console.log('Server started at http://localhost:' + port);
当服务器运行时,请在 Web 浏览器中或在 Postman 中使用 URL http://localhost:8080/api/users/sammy
。
服务器将回复:
1[secondary_label Output]
2Hello SAMMY!
您可以使用这个param
中间软件进行验证,并确保传输的信息是有效的和正确的格式。
然后将信息保存到请求中(‘req’),以便其他路径可以访问它。
步骤 5 – 使用req.body
与 POST 参数
「express.json()」和「express.urlencoded()」是内置的中间软件功能,可支持 JSON 编码和 URL 编码的实体。
使用代码编辑器打开server.js
,并添加以下代码行:
1[label server.js]
2const express = require('express');
3
4const app = express();
5const port = process.env.PORT || 8080;
6
7app.use(express.json());
8app.use(express.urlencoded({ extended: true }));
9
10// ...
接下来,添加app.post
和req.body.id
,req.body.token
和req.body.geo
:
1[label server.js]
2// ...
3
4// routes will go here
5// ...
6
7app.post('/api/users', function(req, res) {
8 const user_id = req.body.id;
9 const token = req.body.token;
10 const geo = req.body.geo;
11
12 res.send({
13 'user_id': user_id,
14 'token': token,
15 'geo': geo
16 });
17});
18
19app.listen(port);
20console.log('Server started at http://localhost:' + port);
当服务器运行时,使用邮件人生成一个 POST 请求。
<$>[注] 注: 如果您需要协助导航邮政员界面的请求,请参阅 官方文档。
设置请求类型为POST
,请求URL为http://localhost:8080/api/users
。 然后设置Body
为x-www-form-urlencoded
。
然后,提供以下值:
Key | Value |
---|---|
id | 4 |
token | sdfa3 |
geo | us |
在提交回复后,服务器将回复user_id
,token
和geo
值。
结论
在本文中,您了解了如何使用 Express 来从请求中获取 URL 参数和 POST 参数。