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

What is a possible format for complex POST parameters in a RESTful API?

本文关键字:格式 是什么 参数 API 复杂 POST RESTful      更新时间:2023-09-26

我正在使用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进行编码,并将其POST为单个参数,但这听起来有点像黑客。我试图保持我的API尽可能开放和一致,以允许其他客户。

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

与当前将json文本值分配到单个表单数据变量的方法形成对比,该变量被编码并发送为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数组访问?

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