【问题标题】:Cannot extract data from post request in node无法从节点中的发布请求中提取数据
【发布时间】:2019-05-27 07:50:13
【问题描述】:

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

body、params、query分别是干什么用的,有什么区别?

【问题讨论】:

  • 嗨,阿卜杜勒,您首先需要将body.urlencode 值设置为真。我推荐这个项目React with express API
  • 现在 urlenconded:false 有效,但你能告诉我什么时候应该设置为 true。
  • 如果extended 为false,则不能发布“嵌套对象”。 person[name] = 'cw' // Nested Object = { person: { name: cw } }如果extended是真的,你可以做任何你喜欢的方式。
  • 好的,太好了!谢谢!
  • 你能告诉我为什么我需要在我的 server.js 文件中导入正文解析器,即使在我的登录文件中像问题中的节点脚本一样导入它之后?

标签: node.js reactjs get axios put


【解决方案1】:

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

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

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

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

【讨论】:

  • 您还需要帮助吗?
  • 不,谢谢,但我想知道为什么在我使用路由器时需要在我的 server.js 文件中导入它并在登录文件中导入必要的依赖项。
猜你喜欢
  • 1970-01-01
  • 2017-10-13
  • 1970-01-01
  • 2014-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多