如何使用数组发出GET请求

时间:2019-07-16 06:27:31

标签: angular httpclient

let owners = ['Chris', 'John'];

this.http.get('/pets', {'owners': owners}).subscribe(...);

请求就像.../pets/owners=Chris&owners=John

但是我想像.../pets/owners=['Chris', 'John']这样的要求。

有什么方法可以做到这一点?

2 个答案:

答案 0 :(得分:3)

我很好奇为什么您的API期望您发送这样的请求?

您要发送的数据应作为请求有效内容发送到POST请求。像这样:

let owners = ['Chris', 'John'];
this.http.post(`/pets/owners`, { owners }).subscribe(...);

或者您应该将它作为GET请求发送,然后在这种情况下作为查询参数发送:

let owners = ['Chris', 'John'];
this.http.get(`/pets?owners=${owners.toString()}`).subscribe(...);

如果您仍在发送像这样的数据,那么您的服务器如何截获此请求?我之所以这样问,是因为您没有将owners数组设置为任何值。

如果您仍然想像这样发送,请按以下步骤操作:

let owners = ['Chris', 'John'];
this.http.get(`/pets/owners=${JSON.stringify(owners)}`).subscribe(...);

但是话又说回来,我不太确定您的后端如何理解这个请求。

答案 1 :(得分:0)

我建议您使用发布请求,并在请求正文中传递所有者列表。

例如:

public serviceMethod(owners): Observable<expectedType> {

  let headers = new HttpHeaders();
  headers = headers.set('Content-Type', 'application/json');

  let params = new HttpParams();
  return this.http.post('/pets', owners, {headers: headers, params: params});
}

然后,您可以在需要使用的地方订阅该服务方法:

service.serviceMethod(['Chris', 'John']).subscribe(...);