繁体   English   中英

如何将Angular 2中的formData发送到Node.js?

[英]How to send formData from Angular 2 to nodejs?

我正在使用此代码:

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 {用户名:'user',密码:'password'}。 但是我需要像{fields:{username:'user',password:'password'}}这样的json

创建指定格式的对象,使用json.stringify从中创建一个字符串,然后将其发送到node.js服务器。

如果只想使用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());

希望对您有帮助,蒂埃里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM