我对节点中的解析请求有疑问。我无法登录req.body
,因为请求是一个字符串。看这个例子:
front.js
const data = { name: "John" };
axios.post('http://[address]/sendmail', JSON.stringify(data));
server.js
const express = require('express');
const path = require('path');
const app = express();
const bodyParser = require('body-parser');
const exec = require('child_process').exec;
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true, }));
const nodemailer = require("nodemailer");
app.get('/', (req, res) => {
res.send("OK")
})
app.post('/sendmail', (req, res) => {
console.log(req.body) //!!!! here is my problem
//server shows me: { '{"userName":"Agata"}': '' }
}
当我通过axios
将数据发送到服务器时,他在解析此数据时遇到了问题。
我无法从对象获取属性,因为它看起来像这样:
{ '{"userName":"Agata"}': '' }
版本:
帮助:(
答案 0 :(得分:1)
JavaScript函数JSON.stringify()
将对象转换为字符串,这就是为什么您以{ '{"userName":"Agata"}': '' }
格式接收数据的原因。
您的front.js
文件应如下所示:
const data = { name: "John" };
axios.post('http://[address]/sendmail', data);
对于server.js
,有必要实现bodyParser.json([options])
,这将返回仅解析json并且仅查看Content-Type标头与type选项匹配的请求的中间件。该解析器接受主体的任何Unicode编码,并支持gzip和deflate编码的自动填充。
这将是与express.js
一起使用的方式
var bodyParser = require('body-parser');
app.use(bodyParser.json());