我正在使用Angular 5和新的 HttpClient 来执行带有查询参数的HTTP GET请求。目前,它创建的查询参数等于param1=20
。是否可以对其进行更改,以便针对特定参数param1>=20
?
const room = {
name: "A1"
seats: 20
};
// currently it will do: '?name=A1&seats=20' but I need it to be like: '?name=A1&seats>=20'
const httpParams = new HttpParams({ fromObject: room});
this.http.get(this.apiUrl, {params: httpParams});
答案 0 :(得分:0)
您可以轻松实现所需的最终结果:
const room = {
name: "A1"
"seats>": 20
};
const httpParams = new HttpParams({ fromObject: room});
this.http.get(this.apiUrl, {params: httpParams});
这将导致Angular的HttpClient生成以下查询参数:name=A1&seats%3E=20
(解码后将等于name=A1&seats>=20
)。
请记住,在服务器端,您必须以seats>
的形式访问查询参数值。在Node.js Express中,它将是req.params['seats>']
。由于=
在编码查询字符串时是一个特殊字符,因此它将始终被删除,因此如果您希望在服务器端收到seats>=
(大于或等于)的内容,则您赢了不能那样做。相反,如果您想支持此类条件,则可以将其编码为variablename_{condition}
,其中condition
为:
gte
- 大于或等于gt
- 大于lte
- 小于或等于lt
- 少于我建议你不要使用被编码的符号(比如>
),因为阅读人类查询字符串的含义要容易得多。
比较:
seats_gt=20&seats_lt=30
与seats%3E=20&seats%3C=30
。哪一个对您更具可读性?