我正在使用此代码:
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获得了json {用户名:'用户',密码:'密码'在this.request.body上。但我需要json,如{fields:{用户名:'用户',密码:'密码' }}
答案 0 :(得分:1)
创建指定格式的对象,使用json.stringify从中生成一个字符串并将其发送到node.js服务器。
答案 1 :(得分:1)
如果您只想使用网址编码表单,则无法使用。实际上,您的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());
希望它可以帮到你, 亨利