我正在尝试构建一个为所有调用返回 JSON 的 REST Web 服务。通常这很简单,我只是这样做:
return new Response(json_encode($return_object));
我的问题是,我应该如何以全局方式拦截异常?我想这样做,因为如果我的应用程序中的任何地方发生异常,我仍然想向客户端返回一条 JSON 消息,基本上说“Yo dawg,我听说你喜欢异常”。我的想法是,在成功和失败的情况下都返回 JSON 将简化任何客户端实现我的 API 所需的工作。
到目前为止,我唯一能想到的就是像这样编写每个控制器动作:
public function generateMemeAction($arg1, $arg2) {
$return_object = array();
try {
// stuff to generate meme here
$return_object['status'] = "GREAT SUCCESS!";
} catch (Exception $e) {
// epic fail
$return_object['status'] = "UnluckyBrianException";
}
return new Response(json_encode($return_object));
}
这一切都很棒而且很棒,但是对于我的应用程序中的每个操作,try-catch 块都是一样的,每次我必须围绕一堆复制意大利面进行编辑时,我都会感到很傻。专业提示?