RESTful API中复杂POST参数的可能格式是什么?

我正在使用node.js + express开发一个应用程序,其中包含一个允许用户订阅项目列表的结构。 每个列表订阅涉及诸如每个项目的最低分数和列表中的前N个项目之类的选项,并且订阅可被组织成与整个订阅列表模式中的特定排名相关的数字分组。 多个订阅可以在一个等级,允许关系,而其他人可能排名较高或较低。

我目前的问题是,我提供了一个界面来pipe理这些列表订阅和他们的选项,虽然我可以想到几个UI的可能性,我有点难住关于提交结果回我的服务器的最佳格式。

以JSON表示,这就是我将要处理的内容:

 [ [ {"list_id":1,"min_score":0,"limit":500} ], [ {"list_id":12,"min_score":5,"limit":-1}, {"list_id":16,"min_score":5,"limit":-1} ], [ {"list_id":2,"min_score":0,"limit":-1} ] ] 

我试图简单地编码该JSON并将其作为单个参数进行发布,但这听起来有些诡异。 我试图保持我的API尽可能开放和一致,以允许其他客户端。

将它作为ContentType:application / json POST到指定的url是理想的方法。

与目前的方法相比,将json文本值分配到单个格式的数据variables中,该数据variables以ContentType编码并发送:application / x-www-form-urlencoded

基本上,在jQuery中你想要做的是:

 $.ajax({ type: 'POST', url: url, data: json, success: success, dataType: "json" }); 

我更喜欢用XML和JSON来看待事情,下面是我会推荐的:

 <?xml version="1.0"?> <groups> <group> <rank>1</rank> <lists> <list> <id>1234</id> <minScore>0</minScore> <limit>500</limit> </list> </lists> </group> <group> <rank>2</rank> <lists> <list> <id>12345</id> <minScore>5</minScore> <limit>-1</limit> </list> <list> <id>123456</id> <minScore>5</minScore> <limit>-1</limit> </list> </lists> </group> <group> <rank>3</rank> <lists> <list> <id>123456</id> <minScore>50</minScore> <limit>567</limit> </list> </lists> </group> </groups> 

你可以试试

 /group/list-id=1&limit=500/group/list-id=12&min-score=5/list-id=16&min-score=5/group/list-id=2 

@mythz的JSON方法是首选。 如果不能使用JSON,请使用与jQuery相同的格式:

如何通过JQuery Post传递一个Javascript数组,以便通过PHP $ _POST数组访问它的所有内容?

这是一个事实上的标准,所以最好使用它,而不是推出自己的。