gpt4 book ai didi

php - FosRestbundle 不断发送 text/html 作为响应,我们期待 json。

转载 作者:行者123 更新时间:2023-12-03 18:38:52 25 4
gpt4 key购买 nike

这是我们的 Controller :

function getLocationsAction(Request $request) {

$dm = $this->get('doctrine.odm.mongodb.document_manager');
$query = $dm->createQueryBuilder('MainClassifiedBundle:Location')->select('name', 'state', 'country', 'coordinates');
$locations = $query->getQuery()->execute();

$data = array(
'success' => true,
'locations' => $locations,
'displaymessage' => $locations->count() . " Locations Found"
);

$view = View::create()->setStatusCode(200)->setData($data);
return $this->get('fos_rest.view_handler')->handle($view);
}

这是 fosrestbundle 的 config.yml:
fos_rest:
view:
formats:
json: true
templating_formats:
html: true
force_redirects:
html: true
failed_validation: HTTP_BAD_REQUEST
default_engine: twig

这是路线:
MainClassifiedBundle_get_locations:
pattern: /locations/
defaults: { _controller: MainClassifiedBundle:ClassifiedCrudWebService:getLocations, _format:json}
requirements:
_method: GET

为什么我们得到 text/html ?我们如何强制响应为 application/json?

请帮忙,因为这目前正在造成巨大的痛苦

最佳答案

您正在静态创建 View ,并且尚未启用任何监听器。

这样就不会涉及格式猜测。

将格式作为参数传递给您的函数并在 View 对象上设置格式:

function getLocationsAction(Request $request, $_format) {
{
// ...
$view = View::create()
->setStatusCode(200)
->setData($data)
->setFormat($_format) // <- format here
;
return $this->get('fos_rest.view_handler')->handle($view);
}

请参阅文档章节 The View Layer

如果您想要自动猜测格式,您必须启用 监听器
fos_rest:
param_fetcher_listener: true
body_listener: true
format_listener: true
view:
view_response_listener: 'force'

Listener Support 一章中阅读更多内容。

关于php - FosRestbundle 不断发送 text/html 作为响应,我们期待 json。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17480123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com