Отправка данных в формате json из angular в nodejs

Как разместить данные json с angular на сервер nodejs.

Пытался изменить заголовок на multipart / form-data, но получил данные со всем объектом в качестве ключа полученных данных, а символы «плюс» были заменены пробелом.

//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 ответа


Я не думаю, что вы хотите использовать qs.parse здесь, так как он пытается разобрать строку запроса. То, что вы публикуете, является запросом JSON.

Попробуйте изменить qs.parse на JSON.parse (импорт не требуется)

request.on('end', function () {
    // `JSON` instead of `qs`
    var data = JSON.parse(body);
    console.log(data);
});

С заголовком 'multipart / form-data' и, как говорит ответ Braza, с использованием JSON.parse () вместо qs.parse () на сервере nodejs достигается ожидаемый результат.


Есть идеи?

10000