如何将formData从Angular 2发送到nodejs

How to send formData from Angular 2 to nodejs?

本文关键字:2发 nodejs Angular formData      更新时间:2023-09-26

我使用的是以下代码:

var creds = "username=" + 'user' + "&password=" + 'password';
var headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
http.post('http://localhost:3000/', creds, {
  headers : headers
})
    .map(res => res.json())
    .subscribe(
        data => this.logData(data),
        err => this.logError(err),
    () => console.log('Quote Complete')
);

NodeJs在this.request.body上得到了json{username:'user',password:'password'}。但我需要类似于{fields:{username:'user,password:'password'}}的json

如果只想使用url编码的表单,则不能。事实上,Node应用程序将把字符串内容(username=user&password=somepwd)转换/反序列化为一个简单(扁平)的JavaScripty对象。

为了实现您在Node应用程序中接收的数据所需的(特定格式),您需要切换到请求负载的application/json内容类型,如下所述:

var creds = {
  fields: {
    username: 'user',
    password: 'password'
  }
}
var headers = new Headers();
headers.append('Content-Type', 'application/json');
http.post('http://localhost:3000/', JSON.stringify(creds), {
  headers : headers
})
  .map(res => res.json())
  .subscribe(
    data => this.logData(data),
    err => this.logError(err),
    () => console.log('Quote Complete')
  );

不要忘记在Node应用程序中注册正确的反序列化程序。例如使用Express:

var express = require('express');
var application = express();
application.use(bodyParser.json());

希望它能帮助你,Thierry

制作指定格式的对象,使用json.stringfy将其制作成字符串并发送到node.js服务器。