如何将json数据从angular发布到nodejs服务器。
试图将标头更改为multipart / form-data,但是将接收的数据以整个对象作为接收数据的键,并将'plus'字符替换为空格。
//Service
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
})
};
public post(data){
return this.http.post('http://localhost:3000/', data, httpOptions);
}
//Component
.post({'ok++':'++'}).subscribe(
(data:any) => { }
//nodejs server
var http = require('http');
var qs = require('querystring');
http.createServer(function (request, response) {
response.setHeader('Access-Control-Allow-Origin', '*');
response.setHeader('Access-Control-Allow-Methods', '*');
response.setHeader('Access-Control-Allow-Headers', '*');
var body = '';
request.on('data', function (data) {
body += data;
});
request.on('end', function () {
var data = qs.parse(body);
console.log(data);
});
}).listen(3000, function () { });
,标头为“ Content-Type”:“ application / json”: {'ok ++':'++'}
收到: [对象:空原型] {}
,标头为“ multipart / form-data”: {'ok ++':'++'}
收到: [对象:空原型] {'{“ ok”:“”}':''
答案 0 :(得分:1)
我认为您不想在这里使用qs.parse
,因为这是在尝试解析查询字符串。您要发布的是JSON请求。
尝试将qs.parse
更改为JSON.parse
(无需导入)
request.on('end', function () {
// `JSON` instead of `qs`
var data = JSON.parse(body);
console.log(data);
});
答案 1 :(得分:0)
使用标头“ multipart / form-data”,并且如braza的回答所述,在nodejs服务器上使用JSON.parse()而不是qs.parse()可以达到预期的结果。