介绍
通常,当您使用Express构建应用程序时,您需要从用户那里获取信息。两种最流行的方法是 URL 参数和 POST 参数。
在本文中,您将学习如何使用 Express 从请求中检索 URL 参数和 POST 参数。
先决条件
要完成本教程,您需要:
- Node.js 安装在本地,您可以按照如何安装 Node.js 和创建本地开发环境来完成。
- 发送 POST 请求需要下载和安装类似Postman的工具。
注意:以前,本教程建议使用req.param
. 自 v4.11.0 起已弃用。本教程还建议安装body-parser
. 从 v4.16.0 开始,这不再是必需的。
本教程已通过 Node v15.4.0、npm
v7.10.0 和express
v4.17.1 验证。
步骤 1 – 设置项目
首先,打开终端窗口并创建一个新的项目目录:
- mkdir express-params-example
然后,导航到新创建的目录:
- cd express-params-example
此时,您可以初始化一个新的 npm 项目:
- npm init -y
接下来,您需要安装express
软件包:
- npm install express@4.17.1
此时,您已准备好使用 Express 的新项目。
创建一个新server.js
文件并使用代码编辑器打开它:
const express = require('express');
const app = express();
const port = process.env.PORT || 8080;
// routes will go here
app.listen(port);
console.log('Server started at http://localhost:' + port);
重新访问您的终端窗口并运行您的应用程序:
- node server.js
每次编辑server.js
. 如果这变得乏味,请参阅如何使用 nodemon 自动重新启动您的 Node.js 应用程序。
现在让我们创建两条路由来测试抓取参数。
步骤 2 – 使用req.query
URL 参数
req.query
可用于检索 URL 参数的值。
考虑以下示例:
http://example.com/api/users?id=4&token=sdfa3&geo=us
该URL包括用于参数id
,token
和geo
(地理位置):
id: 4
token: sdfa3
geo: us
重温server.js
与您的代码编辑器并添加以下代码线req.query.id
,req.query.token
以及req.query.geo
:
// ...
// routes will go here
// ...
app.get('/api/users', function(req, res) {
const user_id = req.query.id;
const token = req.query.token;
const geo = req.query.geo;
res.send({
'user_id': user_id,
'token': token,
'geo': geo
});
});
app.listen(port);
console.log('Server started at http://localhost:' + port);
在服务器运行时,http://localhost:8080/api/users?id=4&token=sdfa3&geo=us
在 Web 浏览器或 Postman 中使用 URL 。
该服务器将响应回来的user_id
,token
和geo
值。
第 3 步 –req.params
与路由一起使用
req.params
可用于从路由中检索值。
考虑以下 URL:
http://localhost:8080/api/1
此 URL 包括api
和:version
( 1
) 的路由。
server.js
使用您的代码编辑器重新访问并添加以下代码行req.params.version
:
// ...
// routes will go here
// ...
app.get('/api/:version', function(req, res) {
res.send(req.params.version);
});
app.listen(port);
console.log('Server started at http://localhost:' + port);
在服务器运行时,http://localhost:8080/api/1
在 Web 浏览器或 Postman 中使用 URL 。
服务器将返回该version
值。
第 4 步 –.param
与路由处理程序一起使用
接下来,您将使用 Express.param
函数获取特定参数。这被认为是中间件,将在调用路由之前运行。
这可用于验证(例如检查用户是否存在)或获取有关该用户或项目的重要信息。
考虑以下 URL:
http://localhost:8080/api/users/sammy
此 URL 包括users
和:name
( Sammy
) 的路由。
Revisit server.js
with your code editor and add the following lines of code for modifying the name
:
// ...
app.param('name', function(req, res, next, name) {
const modified = name.toUpperCase();
req.name = modified;
next();
});
// routes will go here
// ...
app.get('/api/users/:name', function(req, res) {
res.send('Hello ' + req.name + '!');
});
app.listen(port);
console.log('Server started at http://localhost:' + port);
With the server running, use the URL http://localhost:8080/api/users/sammy
in either a web browser or with Postman.
The server will respond back with:
OutputHello SAMMY!
You can use this param
middleware for validations and making sure that information passed through is valid and in the correct format.
Then save the information to the request (req
) so that the other routes will have access to it.
Step 5 – Using req.body
with POST Parameters
express.json()
and express.urlencoded()
are built-in middleware functions to support JSON-encoded and URL-encoded bodies.
Open server.js
with your code editor and add the following lines of code:
const express = require('express');
const app = express();
const port = process.env.PORT || 8080;
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
// ...
Next, add app.post
with req.body.id
, req.body.token
, and req.body.geo
:
// ...
// routes will go here
// ...
app.post('/api/users', function(req, res) {
const user_id = req.body.id;
const token = req.body.token;
const geo = req.body.geo;
res.send({
'user_id': user_id,
'token': token,
'geo': geo
});
});
app.listen(port);
console.log('Server started at http://localhost:' + port);
With the server running, generate a POST request with Postman.
Note: If you need assistance navigating the Postman interface for requests, consult the official documentation.
Set the request type to POST
and the request URL to http://localhost:8080/api/users
. Then set Body
to x-www-form-urlencoded
.
Then, provide the following values:
Key | Value |
---|---|
id | 4 |
token | sdfa3 |
geo | us |
After submitting the response, the server will respond back with the user_id
, token
, and geo
values.
Conclusion
In this article, you learned how to use Express to retrieve URL parameters and POST parameters from requests. This was achieved with req.query
, req.params
, and req.body
.