Symfony FOSRestBundle:在浏览器上呈现XML
假设我有一个RESTAPI调用:Symfony FOSRestBundle:在浏览器上呈现XML,symfony,fosrestbundle,Symfony,Fosrestbundle,假设我有一个RESTAPI调用: /api/message/list 我希望根据HTTP Accept标头使用不同的响应格式 当我从curl命令请求JSON或XML时,它工作得非常好。但当我从浏览器加载它时,它会尝试渲染细枝模板,我不希望这样。我希望它返回XML内容而不是HTML。使用这种方法,我不需要为浏览器输出创建细枝文件 我之所以想这样做,是因为在浏览器上有API输出,而不需要为其创建细枝是很实际的 配置文件中是否缺少某些内容?或者,默认情况下,当前不支持此操作 我试过用这个,但没用 f
/api/message/list
我希望根据HTTP Accept标头使用不同的响应格式
当我从curl命令请求JSON或XML时,它工作得非常好。但当我从浏览器加载它时,它会尝试渲染细枝模板,我不希望这样。我希望它返回XML内容而不是HTML。使用这种方法,我不需要为浏览器输出创建细枝文件
我之所以想这样做,是因为在浏览器上有API输出,而不需要为其创建细枝是很实际的
配置文件中是否缺少某些内容?或者,默认情况下,当前不支持此操作
我试过用这个,但没用
fos_rest:
body_listener:
decoders:
html: fos_rest.decoder.xml
...
我在config.yml上的完整FOSRest配置:
fos_rest:
param_fetcher_listener: true
body_listener:
decoders:
json: fos_rest.decoder.json
xml: fos_rest.decoder.xml
html: fos_rest.decoder.xml
format_listener:
default_priorities: [html, xml, json]
fallback_format: xml
view:
view_response_listener: force
formats:
json: true
xml: true
force_redirects:
html: true
failed_validation: HTTP_BAD_REQUEST
default_engine: php
sensio_framework_extra:
view: { annotations: false }
router: { annotations: true }
控制器上的“我的列表”操作仅返回消息数组:
<?php
use FOS\RestBundle\Controller\Annotations as Rest;
class MessageController extends Controller {
/**
* @Rest\View()
*/
public function listAction() {
$messages = //get the messages
return $messages;
}
...
}
?>
谢谢 很高兴看到您的路由文件。