在使用 Express.js 进行开发时,我们经常会遇到 POST 请求没有 body 的问题。这是因为 Express.js 默认情况下不会解析请求体,需要手动进行配置。本文将介绍如何解决此问题,同时提供示例代码以供参考。
问题描述
在使用 Express.js 进行开发时,如果我们通过 POST 请求发送数据,我们会发现在路由处理程序中无法获取到请求体。这是因为 Express.js 默认情况下不会解析请求体,需要手动进行配置。
例如,以下代码将无法获取到 POST 请求的请求体:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- --- - ---------- --------------------- ----- ---- -- - ---------------------- -- -- --------- --------------- --- -----------------
解决方法
要解决这个问题,我们需要在 Express.js 中使用 body-parser 中间件。body-parser 是一个 Node.js 中间件,用于解析 HTTP 请求体中的数据。
安装 body-parser
首先,我们需要安装 body-parser。可以使用 npm 进行安装:
npm install body-parser --save
使用 body-parser
安装完成后,我们需要在 Express.js 中使用 body-parser 中间件。在路由处理程序之前使用 body-parser 中间件即可解析请求体中的数据。以下是一个示例:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ---------- - ----------------------- ----- --- - ---------- -- -- ----------- -------- ------------------------------- --------- ----- ---- --------------------------- --------------------- ----- ---- -- - ---------------------- -- --------- --------------- --- -----------------
在上面的示例中,我们使用了 body-parser 中间件,并在路由处理程序之前调用了 app.use()
方法来使用该中间件。同时,我们使用了 bodyParser.urlencoded()
和 bodyParser.json()
方法来分别解析表单数据和 JSON 数据。
示例代码
下面是一个完整的示例代码,用于演示如何解决 Express.js 中 POST 请求没有 body 的问题:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ---------- - ----------------------- ----- --- - ---------- -- -- ----------- -------- ------------------------------- --------- ----- ---- --------------------------- --------------------- ----- ---- -- - ---------------------- -- --------- --------------- --- ---------------- -- -- - ------------------- ------- -- ---- ------- ---
结论
在 Express.js 中解决 POST 请求没有 body 的问题,我们需要使用 body-parser 中间件来解析请求体中的数据。通过在路由处理程序之前使用 body-parser 中间件,我们可以轻松地获取 POST 请求中的请求体数据。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67565ab33af3f99efe5b00f1