我想使用Node.js中的express和body-parser向服务器发送带有自定义字符串值的请求,但是当我尝试检查发布的值时,我得到以下内容。
[object Object]
服务器 -
var express = require('express')
var bodyParser = require('body-parser')
var app = express()
app.use(bodyParser.urlencoded({ extended: true }))
app.post('/', callback)
function callback(req, res) {
console.log('post/' + req.body)
res.send('post success!')
}
客户 -
var request = require('request')
request.post({
url: 'http://127.0.0.1:8000/',
body: 'testing'
}, function optionalCallback (err, httpResponse, body) {
if (err) {
return console.error('upload failed:', err)
}
console.log('Upload successful! Server responded with:', body)
})
客户日志 -
上传成功!服务器响应:发布成功!
服务器日志 -
发布/ [对象]
如何获取字符串内容"testing"
?
谢谢!
答案 0 :(得分:4)
如果你想在console.log中看到[object Object]内容,请尝试:
const util = require('util');
...
console.log(`post/${util.inspect(req.body,false,null)}`);
更多信息:util.inspect
答案 1 :(得分:3)
您需要通过form data发布 - 通过request
[forms] - 会应用相应的application/x-www-form-urlencoded
http标头。请注意以下内容......
// -- notice the keyed object being sent
request.post('http://127.0.0.1:8000/', {
form: {customKey: 'testing'}
}, function (err, httpResponse, body) {
console.log(body); // post success!
});
在您的终端上,如果您想将其记录下来,则可以这样做......
app.post('/', function (req, res) {
console.log('post/ ', req.body.customKey'); // -- post/ testing
res.send('post success!');
});
答案 2 :(得分:1)
我正在使用验证中间件..因此这是一个问题。 验证者是..
BookingBodyValidation: [
sanitizeBody("*")
.trim()
.escape(),
body("refNo").notEmpty()
]
删除此“ sanitizeBody()。trim()。escape()”解决了该问题。
答案 3 :(得分:0)
有人可能会发现这个方便...对于服务器端,我写了一个小的JS片段来解析传入的 req.body 的键/值对(application / x-www -form-urlencoded)并将它们作为有效的JSON对象显示在控制台上:
const util=require('util');let s=util.inspect(req.body)
.split(`Content-Disposition: form-data; name`);s.splice(0,1);
let r=`{"`;s.forEach((e)=>{r+=e.split(`\\r\\n------`)[0]
.replace(`"\\r\\n\\r\\n`,`":"`).replace(`\': \'"`,``)
.replace(`=`,``)+`",`});s=r.slice(0,-1)+`}`;console.log(s);
答案 4 :(得分:0)
最简单的方法是使用console.dir()而不是console.log()。
控制台方法dir()显示指定JavaScript对象的属性的交互式列表。输出显示为带有显示三角形的层次结构列表,可让您查看子对象的内容。
换句话说,console.dir()是查看所有属性的方式 控制台中指定的JavaScript对象,开发人员可以通过该对象 轻松获取对象的属性。