2016-07-05 16 views
1

チームでAPIを設計する際に、私たちが送信した複雑なクエリパラメータをオブジェクトとして、オブジェクトの配列などにエンコードする必要があります。経路GET /resource/と私はクエリのパラメータで直接フィルタのセットを適用したい。このフィルタのオブジェクトリテラルの構造は、URLでこれをエンコードGET要求にエンコードされたオブジェクトクエリのパラメータを使用する

filter: { 
    field1: { 
    contains: 'value', 
    notin: ['value2', 'value3'] 
    }, 
    field2: { 
    greaterThan: 10 
    } 
} 

ようになり、そのような内部で使用express.js qsノードモジュールとしてクエリ文字列パーサを経由して、バックエンドで安価になります。しかし、1)生成されたURLは非常に読みにくいです。クライアントがAPIに接続したいのであれば、エンコーディングライブラリを使用する必要があります。2)このようなクエリパラメータを使用したことはないと思われます。私は少し力を入れています。私はそれがいかに使い慣れているか、そして本当に安全かどうかはわかりません。

上記の例は、次のようなクエリのparamsをもたらすであろう:

GET /resource/?field1%5Bcontains%5D=value&field1%5Bnotin%5D%5B0%5D=value2&field1%5Bnotin%5D%5B1%5D=value3&field2%5BgreaterThan%5D=10 

複雑なオブジェクトは、いくつかの基準やベストプラクティスを持っていることが起こるURLクエリパラメータを送るこの練習をしていますか?

答えて

1

可能なパラメータのリストが非常に長い場合、フィルタリングのために別のソリューションを実装しました。私たちは、フィルタを投稿してフィルタIDを返すという2つのステップでそれをやり遂げました。フィルタIDは、GETクエリで使用できます。

このためのベストプラクティスは見つかりませんでした。

関連する問題