HttpParams将“等于”更改为“大于或等于”

时间:2017-12-25 22:45:57

标签: angular http

我正在使用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});

1 个答案:

答案 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=30seats%3E=20&seats%3C=30。哪一个对您更具可读性?