我正在使用Angular2 / 4构建一个Web应用程序。
我需要使用查询参数将对象发送到其余的api。 我的端点只会通过网址接受一个对象,如下所示:
localhost:8080/api/node?type=bills&quantity=2
我的服务目前是这样的:
addInstance(instance: Instance) {
const params = {
type: instance.type,
quantity: instance.quantity
};
return this.http.post(this.baseUrl, params, {headers: this.headers})
.map(res => {
return res.json();
});
}
但是它不起作用,并且在控制台日志中说没有对象传入URL。如何正确调用API?
答案 0 :(得分:3)
您当前正在发送正文参数,而不是网址参数,并且您的终端正在使用网址参数。但是,您可以使用URLSearchParams
以角度构建url参数尝试:
addInstance(instance: Instance) {
const params = new URLSearchParams();
params.set('type', instance.type);
params.set('quantity', instance.quantity);
return this.http.post(this.baseUrl, body?, {params: params} )
.map(res => {
return res.json();
});
}
您也可以直接使用字符串连接构建URL。
虽然,因为这是一个帖子请求,你应该用你的api端点弄清楚请求的主体应该是什么,因为通常一个post请求包含一个。否则,您应该更改api端点以使其成为get请求。或者使api端点期望body参数而不是url参数。