【发布时间】:2019-04-10 08:52:22
【问题描述】:
我一直在使用 Symfony 作为后端编写 API,第三方编写的插件正在将某些数据发送到端点,然后端点返回一个 json 编码的响应,但是按照中列出的说明进行操作当前 symfony 文档(https://symfony.com/doc/current/components/http_foundation.html)返回值显示两次,响应格式不正确,输出类似字符串
我编写的原始方法调用了数据库来验证令牌、存储书签并显示后端过程的结果,但是当着手处理并删除除了响应构建之外的所有内容时;很明显,这就是问题所在。该方法使用这个sn-p,虽然为了清楚起见,我没有包括数据库处理并使用发布的值作为返回数组,如果是发布或处理的数据,结果是相同的,输出显示两次。
$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 输出的双字符串
例如如果我将这些值发布到上面的 sn-p:
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"}
目前我不知道为什么它会显示两次,我们一如既往地感谢任何帮助。
谢谢
【问题讨论】:
-
删除
$response->send();。 -
正如@u_mulder 所说,您必须删除
$response->send()部分。你已经得到了控制器对 symfony 的响应。 Symfony 然后做其他事情来处理发送命令本身,你不需要这样做。 -
@u_mulder 谢谢你,如果你把这个添加为答案,我会把它标记为正确的,谢谢
标签: php json symfony http-headers response