2017-12-25 7 views
0

新しいHttpClientで角度5を使用して、クエリパラメータでHTTP GET要求を実行しています。現在は、param1=20と等しいクエリパラメータを作成します。特定のパラメータに対してはparam1>=20になるように変更することはできますか?HttpParamsが「等しい」または「より大きい」に等しい

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

Nop、https://github.com/angular/angular/blob/master/packages/common/http/src/params.ts#L177ほとんどのクエリ文字列の標準構造です –

+1

これはちょうどどのようにクエリパラメータは機能します。これらのセマンティクスを実装する場合は、サーバー側で行います。たぶん名前を「minSeats」に変更して明確にすることができます。 – jonrsharpe

答えて

0

あなたが簡単にあなたが望む最終結果を達成することができますが:

const room = { 
    name: "A1" 
    "seats>": 20 
}; 


const httpParams = new HttpParams({ fromObject: room}); 
this.http.get(this.apiUrl, {params: httpParams}); 

これは角度のHttpClientを、以下のクエリパラメータの生成になります:(name=A1&seats>=20に等しくなりますデコード)name=A1&seats%3E=20

サーバー側では、クエリパラメータの値にseats>としてアクセスする必要があります。 Node.js Expressでは、req.params['seats>']になります。 =はクエリ文字列をエンコードする際に特殊文字であるため、常に削除されるため、サーバ側でseats>=(それ以上)を受け取ることを期待している場合は、そのことはできません。 -

  • gt以上
  • から
  • lteより大きい - 以下
    • gte:あなたは、このような基準をサポートしたい場合は代わりに、あなたはconditionがあるvariablename_{condition}としてそれをエンコードすることができます
    • lt - 未満

    エンコードされたシンボルを使用しないことをお勧めしますe >)、人間のためのクエリ文字列の意味を読むのがずっと簡単になるからです。

    比較: seats_gt=20&seats_lt=30seats%3E=20&seats%3C=30です。どちらが読みやすくなっていますか?

    関連する問題