次のようなネストされた検索パラメーターの JS オブジェクト リテラル構造があります。
var search = {
op: 'and',
cri: [
{f: 'foo', o: '=', v: 123},
{
op: 'or',
cri: [
{f: 'bar', o: '<', 456},
{f: 'baz', o: '>', 789}
]
}
]
};
WHERE
その構造に対する SQL クエリの同等の句は次のようになります。
(foo = 123 AND (bar < 456 OR baz > 789))
GET
この構造により、ネストされた検索基準を適切にモデル化できますが、このような高度なデータ構造を HTTPリクエスト経由で渡すためのベスト プラクティスが何であるかはわかりません。リクエストの場合は、POST
JSON エンコードしてメッセージ本文に適切なContent-Type
. ただし、これは検索であるため、意味的には HTTP を使用する必要がありますGET
。私が見ているように、私のオプションは次のとおりです。
- 構造を JSON/URL エンコードし、それを 1 つの URL クエリ パラメータとして渡し、サーバーにデコードさせます。
- この構造を単純なキーと値のペアに変換する (どういうわけか) 厄介な DSL を思いつく
- URL クエリ パラメータに組み込みの配列構文を使用する (例:
?search[0][op]=and&search[0][cri][0][f]=foo&...
)
これらよりも優れたオプションはありますか?そうでない場合、3 つの中でどれが「最高」ですか?