angular - HTTP 查询参数
问题描述
如果我有一个对象数组,其中存储了用户选择的所有搜索过滤器,这是它的结构:
export const filterDataObject = [{
date: '',
tid: '',
className: '',
userName: '',
category: [],
limit: '50',
sort: 'acs'
}];
例如,REST 调用应该是这样的:
http://localhost:1234/api/query?
_filter=tid%3Dcdfg&_limit=50&_sort=asc
而 _filter 正在收集所有参数,但限制和排序
如何将结果数组作为参数传递给我的 httpClient 休息请求,尤其是类别数组?
解决方案
我在这里假设您只想将一个过滤器发送到您的 API,而不是数组,并且您正在使用 Angular 4+
选项1
this.http.get('http://localhost:1234/api/query', {params: filterDataObject[0]})...
选项#2
您可以使用HttpParams
import {HttpParams} from '@angular/common/http';
//...
let params = new HttpParams();
for(let key of Object.keys(filterDataObject[0])){
params= params.set(key, filterDataObject[0][key]) ;
}
this.http.get('http://localhost:1234/api/query', {params: params})...
选项#3
您也可以尝试使用URLSearchParams(如果您不需要 IE 支持)。
let sp = new URLSearchParams();
for(let key of Object.keys(filterDataObject[0])){
sp.set(key, filterDataObject[0][key])
}
const url = `http://localhost:1234/api/query?${sp.toString()}`;
this.http.get(url)...
推荐阅读
- async-await - 我可以使用异步功能从不同的聊天中同时运行相同的命令吗?
- javascript - tsconfig 将 .sql 文件复制到 dist
- azure - 带有 for_each 的 Terraform 动态块
- java - 如果 Maven 属性不符合约定,则 Maven 构建失败
- python - Python:尝试将字符串转换为日期时间
- f# - 使用 Excel-DNA 或 Excel.Interop 将一些 Excel 图表系列值设置为 #N/A
- python - 根据另一组列对一组列进行排序
- ios - 如何根据 react-native-iap 购买中的条件重定向或加载视图
- python - 在 pandas 列上使用分隔符拆分字符串以创建新列
- api - 使用 Python 的 Spotify API 授权代码流