我正在开发一个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工作,所以任何特定于该环境的答案都是有利的。正则表达式?
答案 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
这就是我的结果看起来像是什么,仍在玩弄东西。