推荐答案
在 Express 中,req 和 res 是两个非常重要的对象,分别代表 HTTP 请求和 HTTP 响应。
req对象:req是request的缩写,表示 HTTP 请求。它包含了客户端发送的所有信息,如请求参数、请求头、请求体等。通过req对象,你可以访问请求的 URL、查询字符串、路径参数、请求方法(GET、POST 等)、请求头、请求体等。res对象:res是response的缩写,表示 HTTP 响应。它用于向客户端发送响应数据。通过res对象,你可以设置响应状态码、响应头、发送响应体等。常见的操作包括发送 JSON 数据、重定向、设置 Cookie 等。
本题详细解读
req 对象的常用属性和方法
req.params:获取路由中的路径参数。例如,对于路由/users/:id,req.params.id可以获取到id的值。req.query:获取 URL 中的查询参数。例如,对于 URL/users?name=John,req.query.name将返回"John"。req.body:获取请求体中的数据,通常用于 POST 或 PUT 请求。需要配合中间件如express.json()或express.urlencoded()使用。req.headers:获取请求头信息。req.method:获取请求的 HTTP 方法(如 GET、POST 等)。
res 对象的常用属性和方法
res.status(code):设置响应的状态码。例如,res.status(200)表示成功。res.send(body):发送响应体。可以发送字符串、对象、数组等。res.json(body):发送 JSON 格式的响应体。res.redirect(status, url):重定向到指定的 URL。例如,res.redirect('/home')将客户端重定向到/home。res.setHeader(name, value):设置响应头。例如,res.setHeader('Content-Type', 'application/json')。res.cookie(name, value, options):设置 Cookie。
示例代码
// www.javascriptcn.com code example
const express = require('express');
const app = express();
app.use(express.json()); // 用于解析 JSON 格式的请求体
app.get('/users/:id', (req, res) => {
const userId = req.params.id; // 获取路径参数
const queryName = req.query.name; // 获取查询参数
res.json({ userId, queryName }); // 发送 JSON 响应
});
app.post('/users', (req, res) => {
const userData = req.body; // 获取请求体中的数据
res.status(201).send('User created'); // 发送状态码和响应体
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});在这个示例中,req 对象用于获取请求的路径参数、查询参数和请求体数据,而 res 对象用于发送响应数据和设置状态码。