如何使用 Express 检索 URL 和 POST 参数

介绍

通常,当您使用Express构建应用程序时,您需要从用户那里获取信息。两种最流行的方法是 URL 参数和 POST 参数。

在本文中,您将学习如何使用 Express 从请求中检索 URL 参数和 POST 参数。

先决条件

要完成本教程,您需要:

注意:以前,本教程建议使用req.param. 自 v4.11.0 起已弃用。本教程还建议安装body-parser. 从 v4.16.0 开始,这不再是必需的。

本教程已通过 Node v15.4.0、npmv7.10.0 和expressv4.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文件并使用代码编辑器打开它:

服务器.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.queryURL 参数

req.query 可用于检索 URL 参数的值。

考虑以下示例:

http://example.com/api/users?id=4&token=sdfa3&geo=us

该URL包括用于参数idtokengeo(地理位置):

id: 4
token: sdfa3
geo: us

重温server.js与您的代码编辑器并添加以下代码线req.query.idreq.query.token以及req.query.geo

服务器.js
// ...

// 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_idtokengeo值。

第 3 步 –req.params与路由一起使用

req.params 可用于从路由中检索值。

考虑以下 URL:

http://localhost:8080/api/1

此 URL 包括api:version( 1) 的路由

server.js使用您的代码编辑器重新访问并添加以下代码行req.params.version

服务器.js
// ...

// 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:

server.js
// ...

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:

Output
Hello 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:

server.js
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:

server.js
// ...

// 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.

继续学习使用 Express 4.0 路由器如何使用 Express 传送HTML 文件

觉得文章有用?

点个广告表达一下你的爱意吧 !😁