【发布时间】: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