我正在使用axios发送一个发布请求,以对nodejs后端和mysql数据库做出反应。
在服务器端,当我登录req.body时,它是未定义的 这是我在服务器端记录请求时的参数和查询部分:
params: {},
query: {},
这是在react的handlelogin方法内部:
handleLogin=(event)=>
{event.preventDefault();
let formfields={...this.state.formfields};
axios.post('http://localhost:7000/api/login',{formfields
})
.then(res=>
{
console.log("response receieved");
})
.catch(err=>
{
console.log(err);
});
};
这是节点脚本(位于路由内):
const express = require('express');
const exp = express();
const bodyParser = require('body-parser');
exp.use(bodyParser.urlencoded({extended:false}));
exp.use(bodyParser.json());
const router = express.Router();
router.post('/api/login',(req,res,next)=>{
console.log('Inside login-serverside');
console.log(req);
});
module.exports = router;
我想提交表单和pdf文件(以后),但是我无法在服务器端访问它们。我可以在获取请求时访问request.parameters。这里有什么问题?
正文,参数和查询分别用于什么,有什么区别?
答案 0 :(得分:1)
我的主server.js文件中没有包含正文解析器
const bodyParser = require('body-parser');
exp.use(bodyParser.urlencoded({extended:false}));
包括此功能后,它就可以工作了。我现在可以成功使用request.body并访问axios.post中传递的参数。
尽管我仍然对分别使用参数,查询,数据和正文感到困惑。