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

时间:2011-11-18 22:30:15

标签: javascript json rest node.js express

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

我目前的问题是我提供了一个用于管理这些列表订阅及其选项的界面,虽然我可以想到一些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尽可能开放和一致,以允许其他客户端。

4 个答案:

答案 0 :(得分:5)

ContentType:application / json POST到指定的网址是理想的方法。

与您当前将json文本值分配到单个表单数据变量的方法形成对比,该变量以 ContentType:application / x-www-form-urlencoded 进行编码和发送。

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

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

答案 1 :(得分:0)

我更喜欢看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>

答案 2 :(得分:0)

你可以尝试

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

答案 3 :(得分:0)

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

How to pass a Javascript Array via JQuery Post so that all its contents are accessible via the PHP $_POST array?

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