Angular 5 HTTP Get请求参数 - 发送多个对象

问题描述 投票:1回答:1

我正在尝试使用对象作为参数创建HTTP get请求。这可能吗?我已经尝试了多种方法但没有成功。如果我只发送字符串而不是整个类,它就可以工作

export class City {
  id: number;
  name: string;
}

  const params = new HttpParams().set('city', city)
  return this.http.get('http://localhost:3000/api/place/', {params})
angular angular5 angular-http
1个回答
1
投票

这是一个小辅助函数,JSON编码对象中任何类似Object的属性,将基元保留为字符串。显然你需要在后端解码查询。如果您不想要lodash,请将_.isObjectLike更改为其他检查类型的方法。

require * as '_' from 'lodash';
private objectToHttpParams(obj: any) {
    return Object.entries(obj || {})
      .reduce((params, [key, value]) => {
        return params.set(key, _.isObjectLike(value) ? JSON.stringify(value) : String(value));
      }, new HttpParams());
  }

// use:
const params = this.objectToHttpParams({city});
© www.soinside.com 2019 - 2024. All rights reserved.