如何在Zend Framework 2中发送PUT请求?

时间:2013-05-01 19:32:40

标签: rest zend-framework2

我正在试图弄清楚如何在PUT请求中发送参数。我有一个很好的javascript界面​​,所以我知道服务器端工作,但我的单元测试从不正确发送PUT参数。这是我尝试过的:

$this->request->getQuery()->set("id", $id);
$params = array(
        'attribute' => 'email',
        'email' => 'new_email@email.com',
);
// Set the data to be validated
$this->request->setMethod('PUT');

// Send the additional parameters
$this->request->setContent(json_encode($params));

这个错误是因为服务器正在寻找$ params键“属性”,但是服务器上的$ params数组是空的 - 没有传递$ params。当我尝试时也是如此

foreach ($params as $n => $v) {
    $this->routeMatch->setParam($n, $v);
}

foreach ($params as $n => $v) {
    $this->request->getQuery()->set($n, $v);
}

foreach ($params as $n => $v) {
    $this->request->getPost()->set($n, $v);
}

在zf2中发送PUT参数的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

解决方案是将Content-Type标头设置为application/json。然后

$this->request->setContent(json_encode($params));

的工作原理。唯一的问题就是它破坏了我使用getPost()->set($n,$v)的所有POST请求。我不得不回到每个测试中并对它们执行相同的setContent,然后它们也通过了。