Express框架中req对象的作用及使用方法咨询
搞懂Express中的
req对象 先澄清你的核心误解
兄弟,你刚好搞反啦!req(全称request)根本不是服务器向客户端请求数据的对象——它其实是客户端发送给服务器的请求的信息载体。当用户在浏览器输入网址、点击按钮发AJAX请求,或者APP调用你的API时,这些请求里的所有细节都会被Express打包到req对象里,供你的服务器代码读取和使用。
req里到底装了什么?举几个实用场景
- 请求基础元信息:
req.method:获取请求的HTTP方法(比如GET/POST/PUT/DELETE)req.url:获取请求的路径req.headers:获取客户端的请求头(比如Cookie、User-Agent、Content-Type这些关键信息)
- 客户端发送的业务数据:
- GET请求的查询参数:用
req.query获取,比如请求/article?page=2,可以通过req.query.page拿到2 - POST/PUT的表单/JSON数据:先配置解析中间件(
express.json()或express.urlencoded()),之后就能用req.body读取提交的数据 - URL动态参数:如果路由定义成
/user/:userId,请求/user/123时,用req.params.userId就能拿到123
- GET请求的查询参数:用
- 会话与身份信息:如果用了
express-session或Passport这类中间件,req.session、req.user会存储用户的会话状态或登录信息
简单代码示例,直观理解req的用法
const express = require('express'); const app = express(); // 解析JSON格式的请求体 app.use(express.json()); // 处理GET请求,读取查询参数 app.get('/search', (req, res) => { const keyword = req.query.keyword; console.log('用户搜索关键词:', keyword); res.send(`搜索结果:${keyword}`); }); // 处理POST请求,读取请求体数据 app.post('/register', (req, res) => { const userData = req.body; console.log('用户注册信息:', userData); res.status(201).send(`欢迎你,${userData.username}!`); }); // 处理带动态参数的路由 app.get('/user/:userId', (req, res) => { const userId = req.params.userId; res.send(`你正在查看用户ID:${userId}的详情`); }); app.listen(3000, () => console.log('服务器运行在3000端口'));
一句话总结
req是服务器接收客户端请求的“信息容器”,负责把客户端发来的所有数据和细节传递给你的代码;而你已经熟悉的res(response)对象是服务器发送响应给客户端的工具——二者刚好是一对:req管“收”,res管“发”。
内容的提问来源于stack exchange,提问作者Andrew Burkett
相关产品推荐
相关产品推荐

