我正在设计应该能够接受对象数组的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);
这样可以,还是应该使用一些完全不同的方法?
答案 0 :(得分:10)
不需要将数组包装在具有data
属性的另一个对象中。数组本身是有效的JSON:
post_params = JSON.stringify([ { 'name' : 'Alice', 'age' : 15 },
{ 'name' : 'Bob', 'age' : 20 },
...
]);
post(url, post_params);
请确保您的API也需要此数组。
答案 1 :(得分:7)
基本上,我要找的答案是:
Content-Type: application/x-www-form-urlencoded
;相反,应该使用Content-Type: application/json
,整个HTTP请求如下所示:
POST /whatever HTTP/1.1
Host: api.example.com
Content-Type: application/json
[
{
'name': 'Alice',
'age': 15
},
{
'name': 'Bob',
'age': 20
},
...
]