node.js - 无法从节点中的发布请求中提取数据
问题描述
我正在使用 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 分别用于什么,有什么区别?
解决方案
我的主 server.js 文件中没有包含正文解析器
const bodyParser = require('body-parser');
exp.use(bodyParser.urlencoded({extended:false}));
包括这个之后,它就可以工作了。我现在可以成功使用 request.body 并访问在 axios.post 中传递的参数。
虽然我仍然对参数、查询、数据和正文的使用感到困惑。
推荐阅读
- azure-devops - Azure DevOps 构建管道 - 无法部署 .NET Core 应用
- ruby-on-rails - 使用 Alchemy 的 Rails - 正确设置 Cache-Control 标头
- spring - Spring SAML 发送错误的 AuthNRequest
- mysql - 如何根据 REST API 请求中的标头连接到多个 MySQL 数据库
- python - 如何使您的具有 GUI 的代码在 Amazon EC2 实例上运行
- syntax - 如何编写查询以在 RediSearch 中包含和排除标签?
- jquery - 如何在 Ctrl+左键单击时从多选输入中选择一个输入?
- python - 如何分别绘制重复循环的结果?
- c# - 当我尝试从门户发送邮件时出现错误?
- node.js - 如何使用 truffle 框架与 Node 的以太坊智能合约交互?