推荐答案
在 Express 中,可以通过以下方式获取参数、查询字符串和请求体:
参数 (params):通过
req.params获取。通常用于 RESTful API 中的动态路由参数。app.get('/users/:userId', (req, res) => { const userId = req.params.userId; res.send(`User ID: ${userId}`); });查询字符串 (query):通过
req.query获取。用于获取 URL 中的查询参数。app.get('/search', (req, res) => { const query = req.query.q; res.send(`Search Query: ${query}`); });请求体 (body):通过
req.body获取。通常用于 POST 或 PUT 请求中传递的 JSON 或表单数据。需要先使用body-parser中间件解析请求体。// www.javascriptcn.com code example const express = require('express'); const bodyParser = require('body-parser'); const app = express(); app.use(bodyParser.json()); // 解析 JSON 格式的请求体 app.use(bodyParser.urlencoded({ extended: true })); // 解析 URL 编码的请求体 app.post('/users', (req, res) => { const userData = req.body; res.send(`User Data: ${JSON.stringify(userData)}`); });
本题详细解读
1. 参数 (params)
- 用途:用于获取路由中的动态参数。例如,在 RESTful API 中,
/users/:userId中的:userId是一个动态参数。 - 获取方式:通过
req.params对象访问。req.params是一个包含路由参数的对象,键名对应路由中的参数名。 - 示例:
app.get('/users/:userId/posts/:postId', (req, res) => { const userId = req.params.userId; const postId = req.params.postId; res.send(`User ID: ${userId}, Post ID: ${postId}`); });
2. 查询字符串 (query)
- 用途:用于获取 URL 中的查询参数。例如,
/search?q=express中的q=express是查询字符串。 - 获取方式:通过
req.query对象访问。req.query是一个包含查询参数的对象,键名对应查询参数的名称。 - 示例:
app.get('/search', (req, res) => { const query = req.query.q; const page = req.query.page || 1; // 默认值为 1 res.send(`Search Query: ${query}, Page: ${page}`); });
3. 请求体 (body)
- 用途:用于获取 POST 或 PUT 请求中传递的数据,通常用于表单提交或 JSON 数据。
- 获取方式:通过
req.body对象访问。需要先使用body-parser中间件解析请求体。 - 解析方式:
bodyParser.json():解析 JSON 格式的请求体。bodyParser.urlencoded({ extended: true }):解析 URL 编码的请求体(通常用于表单提交)。
- 示例:
app.post('/login', (req, res) => { const username = req.body.username; const password = req.body.password; res.send(`Username: ${username}, Password: ${password}`); });
通过以上方式,可以在 Express 中灵活地处理不同类型的请求数据。