我尝试在try的catch部分引入错误500标头。我通过Ajax在symfony控制器方法中调用我的API方法。我的问题是,由于此symfony警告页面
,我无法显示错误消息以下是API端代码:
try{
//Some code
}catch (Exception $e){
header('HTTP/1.1 500 Internal Server Error');
die($e->getMessage()); // I get this message in the error part of the ajax call
}
控制器方法:
public function createModelAction(){
$mail = "test";
$pass = "test";
$oauth = new OAuth($mail, $pass);
$baseUrl = $this->container->getParameter('url_api');
// Récupération des rapports d'avis du réseau demandé
$link = "{$baseUrl}model/" . $mail . "/" . $pass . "/test";
$oauth->fetch($link, $_REQUEST, OAUTH_HTTP_METHOD_POST);
$response = json_decode($oauth->getLastResponse(), true);
if ($response['error']) {
return new JsonResponse($response['error']);
} else {
return new JsonResponse($response['model']);
}
}
所以可以选择跳过此问题。
由于
答案 0 :(得分:2)
使用Symfony请求和响应,而不是手动使用header
。
将API中的代码更改为:
} catch (Exception $e) {
$response['error'] = $e->getMessage();
return $response;
}
在您的控制器中,定义您的回复的状态代码:
if ($response['error']) {
return new JsonResponse($response['error'], 500);
}
您还可以查找创建ExceptionListener并返回JsonResponse而不是抛出异常。