【问题标题】:How to send array to a get request in Angular 8 app?如何将数组发送到 Angular 8 应用程序中的获取请求?
【发布时间】:2020-09-16 16:50:56
【问题描述】:

我正在尝试在获取请求中将 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 代码(rest)中我定义了列表:

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

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

谢谢。

【问题讨论】:

  • 这纯粹是一个后端问题。请更新您的问题以解释后端是什么,您正在使用什么 Java 框架并为此更新标签。您将获得比仅仅标记为 Angular 更好的帮助。谢谢,
  • 在支持的我有正确的代码 O 认为因为我期望的列表,问题是 angualr 没有正确发送列表
  • 那么:loadTripsByIds 输入参数是什么,发出的请求是什么样的,它应该是什么样的?
  • fundsIds.join(', ') 创建一个我可能需要更改但不确定要更改的字符串
  • 如果您按原样附加数组,则应该按预期工作。参数序列化应该处理它:params.append('tripsIds', tripsIds)

标签: angular


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我不是 Java/Sprint 开发人员,但一些后端框架将重复查询参数作为一个集合处理。所以你需要一个像这样的 URL。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 2020-05-14
      • 2014-02-19
      • 2015-02-27
      • 2018-06-26
      • 1970-01-01
      • 2019-08-08
      相关资源
      最近更新 更多