当ModelNotFoundException发生时,我想返回一个 JSON 响应而不是默认的 404 错误页面。为此,我将以下代码写入app\Exceptions\Handler.php:
public function render($request, Exception $exception)
{
if ($exception instanceof ModelNotFoundException) {
return response()->json([
'error' => 'Resource not found'
], 404);
}
return parent::render($request, $exception);
}
Run Code Online (Sandbox Code Playgroud)
但是它不起作用。当ModelNotFoundException发生时,Laravel 只显示一个空白页面。我发现,即使是在宣告一个空的渲染功能Handler.php品牌Laravel上显示空白页ModelNotFoundException。
我该如何解决这个问题,以便它可以返回 JSON/执行覆盖渲染函数中的逻辑?
我正在尝试使用 laravel 创建 RESTful API,我正在尝试获取具有无效 ID 的资源,结果是 404,因为找不到它,但我的问题是响应不是 JSON 格式,而是视图404(默认)与 HTML。有什么方法可以将响应转换为 JSON 吗?对于这种情况,我使用Homestead。
我尝试包含一条后备路线,但它似乎不适合这种情况。
Route::fallback(function () {
return response()->json(['message' => 'Not Found.'], 404);
});
Run Code Online (Sandbox Code Playgroud)
我尝试修改处理程序(App\Exceptions),但没有任何变化。
public function render($request, Exception $e)
{
if ($e instanceof ModelNotFoundException) {
if ($request->ajax()) {
return response()->toJson([
'message' => 'Not Found.',
], 404);
}
}
return parent::render($request, $e);
}
Run Code Online (Sandbox Code Playgroud)