首页 > 解决方案 > 无法从节点中的发布请求中提取数据

问题描述

我正在使用 axios 发送一个发布请求,以响应 nodejs 后端和 mysql 数据库。

在服务器端,当我记录 req.body 时,它是未定义的,这是我在服务器端记录请求时的参数和查询部分:

params: {},
query: {},

这是在反应中的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 文件(稍后),但我无法在服务器端访问它们。我可以在发出 get 请求时访问 request.parameters。这里有什么问题?

body、params 和 query 分别用于什么,有什么区别?

标签: node.jsreactjsgetaxiosput

解决方案


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

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

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

虽然我仍然对参数、查询、数据和正文的使用感到困惑。


推荐阅读