最近,当我使用Content-Type: multipart/form-data
发送到我的REST界面时,我开始收到验证错误。 Content-Type: application/x-www-form-urlencoded
正在运作。
这是我的测试功能:
/**
* @Rest\Route("/testtype")
*/
public function postTypeTestAction()
{
$request = $this->getRequest()->request->all();
$phpContents = file_get_contents("php://input");
return FOSView::create()->setStatusCode(200)->setData(array('request'=>$request, 'phpinput' => $phpContents));
}
当我使用Content-Type: application/x-www-form-urlencoded
进行POST:
{
"request":{
"test":"message"
},
"phpinput":"test=message"
}
当我使用Content-Type: multipart/form-data
进行POST:
{
"request":[
],
"phpinput":"------WebKitFormBoundaryFyQqAxqqfuhWzHUq\r\nContent-Disposition: form-data; name=\"test\"\r\n\r\nmessage\r\n------WebKitFormBoundaryFyQqAxqqfuhWzHUq--\r\n"
}
由于没有请求数据,我收到This value should not be blank
验证错误。这打破了我的申请。我一直盯着这看了很久,我确定我错过了一些简单的事情。
我正在使用Symfony 2.3.7和FOSRestBundle 1.0.0。
答案 0 :(得分:1)
这个问题在一夜之间彻底解决了。没有服务器重启,没有更改代码,我使用相同的工具来测试(DHC by Restlet - Chrome扩展程序)。但是,由于这不适用于开发和登台环境,并且现在正在两种环境中工作,这使我得到的唯一答案是测试工具,Chrome,本地缓存问题或某种组合。
获得的经验:使用多种测试工具。
现在我使用Content-Type: application/x-www-form-urlencoded
进行POST:
{
"request":{
"test":"message"
},
"phpinput":"test=message"
}
现在我使用Content-Type: multipart/form-data
进行POST:
{
"request":{
"test":"message"
},
"phpinput":""
}