【发布时间】:2015-04-21 13:26:12
【问题描述】:
laravel 捕获异常时如何返回 json 数据? 当数据库中不存在数据时,我想返回 Json 数据。
当 laravel 从数据库中找到记录时,它会返回正确的 json 数据。是的! 如果 laravel 没有搜索到任何记录,它不会给出 json 数据! laravel 刚刚重定向了显示“哎呀,看起来出了点问题”的页面。并提供一些额外的信息,“ModelNotFoundException”。
以下代码是我尝试过的。
public function show($id)
{
try {
$statusCode = 200;
$response = [
'todo' => []
];
$todo = Todo::findOrFail($id);
$response['todo']= [
'id' => $todo->id,
'title' => $todo->title,
'body' => $todo->body,
];
} catch(Exception $e) {
// I think laravel doesn't go through following exception
$statusCode = 404;
$response = [
"error" => "You do not have that record"
];
} finally {
return response($response, $statusCode);
}
}
【问题讨论】:
-
尝试像这样捕获异常:
catch(Illuminate\Database\Eloquent\ModelNotFoundException $e) -
我试过了,但它没有捕捉到任何东西。所以我把它改成了if条件。我知道它并不完美,但至少它返回 json ......我会尝试你给出的想法。可能有一些异常类......我猜......