我正在尝试将数组POST到RESTful PHP API。其思想是允许(n>0)条记录,每条记录都包含一个remote_id、一个dimension_id和一个度量。
这是我的客户端Python:
data = urllib.urlencode([
("remote_id", 1),
("dimension_id", 1),
("metric",metric1),
("remote_id", 1),
("dimension_id", 2),
("metric",metric2)
])
response = urllib2.urlopen(url=url, data=data)
这是我的服务器端PHP
<?php
print_r($_POST);
?>
不出所料,这将返回:
Array
(
[remote_id] => 1
[dimension_id] => 2
[metric] => 16
)
在我看来,我正在用最终值覆盖remote_id、dimension_id和metric的每个实例,这并不奇怪,因为它们都用相同的名称键控。
做这件事的正确方法是什么?我可以看到一个带有唯一键(1_remote_id,1_dimension_id,1-metric+2_remote_id,2_dimension_id,2_metric)的糟糕方法,但它的扩展性不太好。
我想我是在追求这样的PHP,但在Python中:
<?php
$observations = array();
$observations[] = [
"remote_id" => "a1",
"metric_id" => "foo",
"metric" => 1
];
$observations[] = [
"remote_id" => "a1",
"metric_id" => "bar",
"metric" => 2
];
?>
感谢任何提示!
Sam
不要引用我的话(我已经很久没有做过任何PHP了),但这可能只是有效的:
data = urllib.urlencode([
("remote_id[]", 1),
("dimension_id[]", 1),
("metric[]",metric1),
("remote_id[]", 1),
("dimension_id[]", 2),
("metric[]",metric2)
])
无论如何我都会试一试。