为什么当我尝试在Postman上测试Zend Framework 2中的PUT方法时,我必须使用x-www-form-urlencoded
选项?为什么Zend Framework 2使用application/x-www-form-urlencoded进行put请求?
/*
Use multipart/form-data for testing.
*/
public function create($data)
{
$form = new AlbumForm();
$album = new Album();
$form->setInputFilter($album->getInputFilter());
$form->setData($data);
if ($form->isValid()) {
$album->exchangeArray($form->getData());
$id = $this->getAlbumTable()->saveAlbum($album);
}
return new JsonModel(array(
'data' => $album->extract(),
));
}
/*
Use application/x-www-form-urlencoded for testing.
*/
public function update($id, $data)
{
$data['id'] = $id;
$album = $this->getAlbumTable()->getAlbum($id);
$form = new AlbumForm();
$form->bind($album);
$form->setInputFilter($album->getInputFilter());
$form->setData($data);
if ($form->isValid()) {
$id = $this->getAlbumTable()->saveAlbum($form->getData());
}
return new JsonModel(array(
'data' => $album->extract(),
));
}
我会得到这样的结果,如果我得到了form-data
选项,
Array
(
[------WebKitFormBoundaryP9erwzQtIaB0m0tr
Content-Disposition:_form-data;_name] => "title"
bla bla bla bla xxx
------WebKitFormBoundaryP9erwzQtIaB0m0tr
Content-Disposition: form-data; name="artist"
xxx xxx
------WebKitFormBoundaryP9erwzQtIaB0m0tr--
)
我不明白为什么Zend2预期。有任何想法吗?使用x-www-form-urlencoded
而不是form-data
有什么优势 - 在Zend2上下文中呢?
我可以在Zend2的某个地方配置PUT方法使用form-data
选项吗?
'尝试使用urlencoded主体,或者编写自己的表单 - 数据分析器。“我可以从任何示例和指南开始? – laukok
一个非常小的例子,没有包含所有可能的结果可以在这里找到:http://www.chlab.ch/blog/archives/php/manually-parse-raw-http-data-php另一个更复杂的是拒绝公关在symfony,与所有讨论为什么这不是这个好主意:https://github.com/symfony/symfony/pull/10381#issuecomment-38717986 –