无法从节点中的发布请求中提取数据

时间:2019-05-27 07:50:13

标签: node.js reactjs get axios put

我正在使用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。这里有什么问题?

正文,参数和查询分别用于什么,有什么区别?

1 个答案:

答案 0 :(得分:1)

我的主server.js文件中没有包含正文解析器

const bodyParser = require('body-parser');
exp.use(bodyParser.urlencoded({extended:false}));

包括此功能后,它就可以工作了。我现在可以成功使用request.body并访问axios.post中传递的参数。

尽管我仍然对分别使用参数,查询,数据和正文感到困惑。