Angular 5 HTTP Get 请求参数 - 发送多个对象
Angular 5 HTTP Get request Parameters - Send multiple objects
我正在尝试使用对象作为参数发出 HTTP get 请求。这可能吗?
我已经尝试了多种方法但没有成功。如果我只发送字符串,而不是整个 class
export class City {
id: number;
name: string;
}
const params = new HttpParams().set('city', city)
return this.http.get('http://localhost:3000/api/place/', {params})
这里有一个小辅助函数,JSON-encodes 对象中的任何 Object-like 属性,将原语保留为字符串。显然,您需要在后端解码查询。如果您不需要 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});
我正在尝试使用对象作为参数发出 HTTP get 请求。这可能吗? 我已经尝试了多种方法但没有成功。如果我只发送字符串,而不是整个 class
export class City {
id: number;
name: string;
}
const params = new HttpParams().set('city', city)
return this.http.get('http://localhost:3000/api/place/', {params})
这里有一个小辅助函数,JSON-encodes 对象中的任何 Object-like 属性,将原语保留为字符串。显然,您需要在后端解码查询。如果您不需要 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});