0

我正在研究一个由多个相互关联的集合组成的 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 中工作,所以任何特定于该环境的答案都是一个加号。正则表达式?

4

1 回答 1

1

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

下面是我如何表示我渴望获取的关联集合记录:

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

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

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

编辑:

这就是我的结果最终的样子,仍然在玩东西。 在此处输入图像描述

于 2013-04-08T20:44:50.783 回答