我目前正在Symfony2应用程序中编写REST服务。这(大致)是我的一个控制器的样子:
/**
* @Route("/account", defaults={"_format" = "json"})
*/
class AccountController extends APIController
{
/**
* @Route("/")
* @Method("get")
*/
public function listAction()
{
// process something here and return JSON-encoded response
}
}
这很好用 - 即如果弹出一些问题并抛出HTTPException
,则使用来自Symfony2的TwigBundle的正确error.json.twig
并将HTTP错误呈现为JSON。
但是,违反路由要求的情况并非如此,@Method("get")
就是一个。例如,如果我针对上述URL抛出POST
或PUT
,我仍然会返回正确的HTTP状态代码,但使用错误的内容类型(text / html而不是application / json)进行渲染
我非常有兴趣让完整的API返回JSON响应,而不是别的 - 问题是:我如何实现这一点?我是否必须完全省略路由要求并自行检查要求(然后最终抛出我自己的HTTPException
)?
答案 0 :(得分:0)
您可能应该将其作为错误/愿望归档于github page。 (我试图找到负责任的PHP文件,但HttpKernel组件并不完全适合胆小的人。)
答案 1 :(得分:0)
您可以尝试在注释上使用yml路由。对我来说很好。抱歉,无法提供更有帮助的回复。