Symfony json 响应返回内容两次
Symfony json response is returning content twice
我一直在写一个 API 使用 Symfony 作为后端,第三方编写的插件正在将某些数据发送到端点,端点然后到 return a json 编码响应,但是按照当前 symfony 文档(https://symfony.com/doc/current/components/http_foundation.html)中规定的说明,return 值显示两次并且响应格式不正确,输出类似于字符串
我编写的原始方法调用数据库来验证令牌、存储书签并显示后端过程的结果,但是当开始解决问题并删除除响应构建之外的所有内容时;很明显,这就是问题所在。该方法使用此代码段,但为了清楚起见,我没有包括数据库处理并使用 posted 值作为 return 数组,如果它是 post 或处理过的数据,输出显示两次。
$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 响应,但 returned 是 json 输出的双字符串
例如如果我 post 将这些值编辑到上面的代码片段中:
token: ksjdbvqpi8e7rqp7evbprb
bookmark: http://www.google.com
return 结果是
{"token":"ksjdbvqpi8e7rqp7evbprb", "bookmark":"http:\/\/www.google.com"}{"token":"ksjdbvqpi8e7rqp7evbprb", "bookmark":"http:\/\/www.google.com"}
当我期待的只是
{"token":"ksjdbvqpi8e7rqp7evbprb", "bookmark":"http:\/\/www.google.com"}
目前我不知道为什么它会显示两次,我们将一如既往地感谢您的帮助。
谢谢
$response->send();
是应该删除的行。
因为您已经 return class Response
的对象,symfony 会注意 输出 对浏览器的响应,您不需要需要用 send()
.
手动完成
我一直在写一个 API 使用 Symfony 作为后端,第三方编写的插件正在将某些数据发送到端点,端点然后到 return a json 编码响应,但是按照当前 symfony 文档(https://symfony.com/doc/current/components/http_foundation.html)中规定的说明,return 值显示两次并且响应格式不正确,输出类似于字符串
我编写的原始方法调用数据库来验证令牌、存储书签并显示后端过程的结果,但是当开始解决问题并删除除响应构建之外的所有内容时;很明显,这就是问题所在。该方法使用此代码段,但为了清楚起见,我没有包括数据库处理并使用 posted 值作为 return 数组,如果它是 post 或处理过的数据,输出显示两次。
$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 响应,但 returned 是 json 输出的双字符串
例如如果我 post 将这些值编辑到上面的代码片段中:
token: ksjdbvqpi8e7rqp7evbprb
bookmark: http://www.google.com
return 结果是
{"token":"ksjdbvqpi8e7rqp7evbprb", "bookmark":"http:\/\/www.google.com"}{"token":"ksjdbvqpi8e7rqp7evbprb", "bookmark":"http:\/\/www.google.com"}
当我期待的只是
{"token":"ksjdbvqpi8e7rqp7evbprb", "bookmark":"http:\/\/www.google.com"}
目前我不知道为什么它会显示两次,我们将一如既往地感谢您的帮助。
谢谢
$response->send();
是应该删除的行。
因为您已经 return class Response
的对象,symfony 会注意 输出 对浏览器的响应,您不需要需要用 send()
.