POST上的QueryParameter

时间:2017-08-30 14:00:16

标签: angular http post angular2-observables

我正在使用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?

1 个答案:

答案 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参数。