将JSON数据从angular发布到nodejs

时间:2019-05-15 22:54:55

标签: node.js json angular typescript post

如何将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”:“”}':''

2 个答案:

答案 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()可以达到预期的结果。