我一直在使用Symfony作为后端编写API,由第三方编写的插件正在将某些数据发送到终结点,然后终结点将返回json编码的响应,但是请按照当前symfony documaentation(https://symfony.com/doc/current/components/http_foundation.html)的返回值显示两次,响应格式不正确,输出类似于字符串
我写的原始方法需要调用数据库以验证令牌,存储书签并显示后端处理的结果,但是当您开始做些粗鲁的工作并删除除了响应构建之外的所有内容时,都可以;显然,这就是问题所在。该方法使用此代码段,尽管为清楚起见,我没有包括数据库处理,也没有使用过帐的值作为返回数组,如果是过帐或已处理的数据,结果是相同的,输出显示两次。
$token = $request->request->get('token');
$bookmark = $request->request->get('bookmark');
$data = ['token' => $token, 'bookmark' => $bookmark];
$response = new Response();
$response->headers->set('Access-Control-Allow-Origin', '*');
$response->setContent(json_encode($data));
$response->send();
return $response;
我期望的是一个json响应,但返回的是json输出的双字符串
例如如果我将这些值发布到上面的代码段中:
token: ksjdbvqpi8e7rqp7evbprb
bookmark: http://www.google.com
返回结果是
{"token":"ksjdbvqpi8e7rqp7evbprb", "bookmark":"http:\/\/www.google.com"}{"token":"ksjdbvqpi8e7rqp7evbprb", "bookmark":"http:\/\/www.google.com"}
当我期望的只是
{"token":"ksjdbvqpi8e7rqp7evbprb", "bookmark":"http:\/\/www.google.com"}
目前我不知道为什么它会显示两次,任何帮助都是一如既往的。
谢谢
答案 0 :(得分:2)
$response->send();
是应删除的行。
由于您已经返回了类Response
的对象,因此symfony会小心地输出对浏览器此响应,因此您无需使用send()
手动进行操作。 / p>