脚本宝典收集整理的这篇文章主要介绍了php – 如何使用Symfony 2和FOSRestBundle从同一路径提供HTML和JSON请求,除了_format之外还使用标头?,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
> /foo.json将导致JSON响应,
>和/ foo将导致HTML响应.
是否有任何方法可以使用_format以外的其他内容协调(在同一主机上!)相同的内容协商,例如Content-tyPE或Accept标头?
我看过Format Listener,但我认为我对如何配置它有一个根本的误解.
给定定义的路线:
<route id="foo" pattern="/foo.{_format}" methods="GET"> <default key="_controller">FooBundle:Foo:get</default> <default key="_format">html</default> </route>
……执行以下操作:
public function getAction(Request $request) { $view = View::create() ->setData(array('greeting' => 'hello world')) ->setFormat($request->getRequestFormat('html')) ->setTemplate('FooBundle:Foo:get.html.twig'); return $this->get('fos_rest.view_handler')->handle($view); }
…以及以下FOSRestBundle配置(代码段):
fos_rest: ... format_listener: true
如果我想要以默认(html)以外的格式协商内容,我需要在请求中指定_format参数,如上所述.
但是,如果我为格式侦听器指定以下规则:
fos_rest: format_listener: rules: - { path: '^/',PRiorITies: ['json'],fallback_format: ~,prefer_extension: false } - { path: '^/',priorities: ['html','*/*'],fallback_format: html,prefer_extension: true }
浏览器请求将我的响应作为Content-Type:application / json返回,但实际内容是text / html内容而不是序列化的JSON.如果我在请求上显式指定Accept标头为Accept:text / html,我收到的响应是Content-Type的内容类型标题:text / html.
任何帮助将不胜感激!
以上是脚本宝典为你收集整理的php – 如何使用Symfony 2和FOSRestBundle从同一路径提供HTML和JSON请求,除了_format之外还使用标头?全部内容,希望文章能够帮你解决php – 如何使用Symfony 2和FOSRestBundle从同一路径提供HTML和JSON请求,除了_format之外还使用标头?所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。