Node.js使用Express框架post传参服务器端为空的解决方法

2023-10-08 10:40:17 浏览数 (3)

环境

Node.js Express框架

问题描述

当测试post请求传入参数时,获取的值为undifined

代码语言:javascript复制
//登录处理函数
exports.login=(req,res)=>{
    const mydata= req.body;
    console.log(mydata);
    res.send('login successed!')
}

postman发送参数

控制台打印结果

原因:未配置body参数解析器

解决方法

在主文件当中 app.js

代码语言:javascript复制
app.use(express.urlencoded({ extended: false }))

利用express提供的方法进行body解析

问题二

使用以上方法,仍却获得的参数为undefined 那么很有可能的原因是

代码语言:javascript复制
app.use(express.urlencoded({ extended: false }))

这句放在的路由之后

由于js是单线程,将会从上到下执行,所以当解析到路由器时,还没有执行解析body,自然而然的就获得的数据为undefined

所以将解析中间件放到路由之前

代码语言:javascript复制
//引用route
const loginrouter =require('./route/login')


// 配置body解析器
app.use(express.urlencoded({ extended: false }))

采用以上顺序将会解决问题。亲测有效

0 人点赞