HTTP 查询参数
HTTP Query Parameters
如果我有一个对象数组,我在其中存储用户选择的所有搜索过滤器,下面是它的结构:
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 rest 请求,尤其是类别数组?
将数据附加到 URLSearchParams
const params = new URLSearchParams();
params.set('sort', val);
params.set('tid', val);
params.set('limit', val);
params.set('sort', val);
const options = new RequestOptions({
headers: this.getAuthorizedHeaders(),
responseType: ResponseContentType.Json,
params: params,
withCredentials: false
});
console.log('Options: ' + JSON.stringify(options));
return this.http.post(this.BASE_URL, data, options)
.map(this.handleData)
.catch(this.handleError);
我在这里假设您只想将一个过滤器发送到您的 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)...
如果我有一个对象数组,我在其中存储用户选择的所有搜索过滤器,下面是它的结构:
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 rest 请求,尤其是类别数组?
将数据附加到 URLSearchParams
const params = new URLSearchParams();
params.set('sort', val);
params.set('tid', val);
params.set('limit', val);
params.set('sort', val);
const options = new RequestOptions({
headers: this.getAuthorizedHeaders(),
responseType: ResponseContentType.Json,
params: params,
withCredentials: false
});
console.log('Options: ' + JSON.stringify(options));
return this.http.post(this.BASE_URL, data, options)
.map(this.handleData)
.catch(this.handleError);
我在这里假设您只想将一个过滤器发送到您的 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)...