POST对象的数组到REST API

时间:2013-07-27 15:45:13

标签: arrays json api rest post

我正在设计应该能够接受对象数组的REST API,比如说

[
 {
   'name': 'Alice',
   'age': 15
 },
 {
   'name': 'Bob',
   'age': 20
 },
 ...
]

实际上,API可以有一个接受单个对象的方法,它将在循环中调用。但是,出于性能原因,我希望在一个请求中POST多个对象。

最优雅的方式是什么?到目前为止,我唯一的想法是使用JSON,例如:

post_params = { 'data' : to_json_string([ { 'name' : 'Alice', 'age' : 15 },
                                          { 'name' : 'Bob',   'age' : 20 },
                                          ...
                                        ])
              };
post(url, post_params);

这样可以,还是应该使用一些完全不同的方法?

2 个答案:

答案 0 :(得分:10)

不需要将数组包装在具有data属性的另一个对象中。数组本身是有效的JSON:

post_params = JSON.stringify([ { 'name' : 'Alice', 'age' : 15 },
                               { 'name' : 'Bob',   'age' : 20 },
                                  ...
                             ]);
post(url, post_params);

请确保您的API也需要此数组。

答案 1 :(得分:7)

基本上,我要找的答案是:

  1. 无需使用网络标准的Content-Type: application/x-www-form-urlencoded;相反,应该使用Content-Type: application/json
  2. 整个HTTP请求如下所示:

    POST /whatever HTTP/1.1
    Host: api.example.com
    Content-Type: application/json
    
    [
      {
        'name': 'Alice',
        'age': 15
      },
      {
        'name': 'Bob',
        'age': 20
      },
      ...
    ]
    
相关问题