4

我有一个用于嵌套搜索参数的 JS 对象文字结构,如下所示:

var search = {
    op: 'and',
    cri: [
        {f: 'foo', o: '=', v: 123},
        {
            op: 'or',
            cri: [
                {f: 'bar', o: '<', 456},
                {f: 'baz', o: '>', 789}
            ]
        }
    ]
};

该结构的 SQL 查询的等效WHERE子句是:

(foo = 123 AND (bar < 456 OR baz > 789))

这种结构允许我很好地模拟嵌套搜索条件,但我不确定通过 HTTPGET请求传递此类高级数据结构的最佳实践是什么。如果它是一个POST请求,我只需 JSON 编码并将其粘贴在消息正文中,并带有适当的Content-Type. 但是,这是一个搜索,所以从语义上讲,我应该使用 HTTP GET。在我看来,我的选择是:

  1. JSON/URL 对结构进行编码并将其作为一个 URL 查询参数传递并让服务器对其进行解码
  2. 想出一个非常笨拙的 DSL,将这种结构转换为简单的键/值对(不知何故)
  3. 对 URL 查询参数使用内置数组语法(例如?search[0][op]=and&search[0][cri][0][f]=foo&...

还有比这些更好的选择吗?如果不是,这三个中哪个是“最好的”?

4

0 回答 0