URL GET参数表示和解析嵌入的对象

时间:2013-04-08 20:12:00

标签: javascript node.js url get

我正在开发一个API,它由几个彼此有关系的集合组成。我想让用户有机会通过GET url参数急切地从关联集合中获取记录。

例如

/api/clients/

将返回一个对象数组,每个对象代表一个客户端。

但客户有“员工”和“模板”。 “模板”也有“修订版”。最后,“修订”有“团体”

我对url参数格式的策略是这样的:

/api/clients?expand=[employees][templates[revisions[groups]]]

代表:

clients
 + employees
 + templates
   + revisions
     + groups

我的问题是,以这种格式解析字符串的好方法是什么:[employees][templates[revisions[groups]]] 到达这样的物体:

{
  "employees": {},
  "templates": {
    "revisions": {
      "groups": {}
    }
  }
}

或类似的东西,易于使用。我在NodeJS工作,所以任何特定于该环境的答案都是有利的。正则表达式?

1 个答案:

答案 0 :(得分:1)

关闭@Kovge的建议,我将使用在我的URL get请求中传递的JSON字符串来处理这种情况。它有点冗长,但应该是可以接受的。

以下是我如何表示我渴望获取的相关收藏记录:

[
  {
    "resource": "employees"
  },
  {
    "resource": "templates",
    "extend": [
      {
        "resource": "revisions",
        "extend": [
          {
            "resource": "groups"
          }
        ]
      }
    ]
  }
]

基本上使用具有“资源”参数和可选“扩展”参数的对象数组。我的请求最终会如下所示:(网址编码)

http://example.com/api/clients?extend=%5B%7B%22resource%22%3A%22employees%22%7D%2C%7B%22resource%22%3A%22templates%22%2C%22extend%22%3A%5B%7B%22resource%22%3A%22revisions%22%2C%22extend%22%3A%5B%7B%22resource%22%3A%22groups%22%7D%5D%7D%5D%7D%5D

编辑:

这就是我的结果看起来像是什么,仍在玩弄东西。 enter image description here