如何在Angular 8应用中将数组发送到get请求?

时间:2019-07-08 07:49:58

标签: angular

我正在尝试在get请求中将ID列表发送到服务器, 以下:

public loadTripsByIds(tripsIds:number[]): Observable<any> {              
    let params = new HttpParams();
    params = params.append('tripsIds', tripsIds.join(', '));    
    return this.http.get<TripObj[]>(`${this.baseUrl}/Trips/ByIds/Get`, {params: params});                        
  }

在服务器api代码(其余)中,我定义了列表:

@GET
@Path("Trips/ById/Get") 
@Produces("application/json")
public List<Trips> loadTripsById(@QueryParam("tripsIds") final List<String> tripsIds) {

我实际上在服务器中得到的是一个包含1个项目(字符串类型)的列表, 逗号分隔。例如“ 10001、10002”。 我可以轻松地在服务器端解析字符串,但是在寻找正确的字符串 将列表发送到每个元素将是ID的服务器的方式。

谢谢。

2 个答案:

答案 0 :(得分:0)

我不是Java / Sprint开发人员,但是某些后端框架将重复查询参数作为集合来处理。因此,您需要一个如下所示的URL。

http://example.com/?id=1&id=2

所以尝试一下,但是我不知道这是否有帮助。

const params = tripIds.reduce((acc, next) => acc.append('tripsIds', next), new HttpParams());

答案 1 :(得分:0)

为了解决该问题,我现在发送参数数组,如下所示:

let params = new HttpParams();
    for (let id of tripsIds) {
      params = params.append('tripIds', id); 
    }