使用 Express 访问 Node.js 中的完整请求正文
在 Node.js 中,利用 Express 处理 POST 请求并访问其正文可能会带来挑战。提供的代码无法检索整个请求正文,从而导致异常。本文探讨了此问题的解决方案,并解决了在不使用express.bodyParser()的情况下获取原始请求的可能性。
使用 Express 中间件
从 Express v4 开始。从 16 开始,内置的 JSON 中间件可以有效地将请求正文解析为 JSON:
app.use(express.json())
该中间件自动将正文内容解析为可通过 req.body 属性访问的 JavaScript 对象。例如:
app.post('/test', (req, res) => { res.json({ requestBody: req.body }) })
在没有中间件的情况下处理原始请求
要在没有中间件的情况下获取原始请求,可以采用另一种方法:
使用 request.rawBody 属性:
此属性提供对原始的、未解析的请求正文的访问。但是,它需要将 bodyParser 中间件中的 limit 选项设置为大于正文预期长度的值。
使用自定义中间件:
可以定义自定义中间件来拦截传入请求并检索原始正文:
app.use((req, res, next) => { req.rawBody = ''; req.on('data', (chunk) => { req.rawBody += chunk; }); req.on('end', () => { next(); }); });
需要注意的是,手动处理原始正文更加复杂,可能会导致性能开销。通常建议使用中间件,因为它简单且高效。
以上是如何使用 Express 访问 Node.js 中的完整请求正文:中间件和原始请求处理指南的详细内容。更多信息请关注PHP中文网其他相关文章!