我正在尝试在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的服务器的方式。
谢谢。
答案 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);
}