我认为这应该是默认实现的,因为我在routes / api.php中工作。
如果我们在id
方法上找不到给定findOrFail()
参数的任何行,我想给出一个404错误的json响应。
类似的东西:
return response()->json(['status' => 'ERROR', 'error' => '404 not found'], 404);
而不是默认的Sorry, the page you are looking for could not be found.
刀片页。
我不想做:
$item = Model::find($id);
if(is_null($item))
return response()->json(['status' => 'ERROR', 'error' => '404 not found'], 404);
当我得到一个id
时,无处不在,我不想在中间件中实现这一点,因为它会导致一些“混乱”。在api.php文件上。
答案 0 :(得分:2)
您始终可以在App \ Exceptions \ Handler.php
中捕获异常使用以下内容将异常导入到类中:
use \Illuminate\Database\Eloquent\ModelNotFoundException;
并在render方法中添加
if ($e instanceof ModelNotFoundException) {
return response()->json([
'message' => 'Record not found',
], 404);
}
答案 1 :(得分:1)
只需添加一下,我最终检查了这三个异常:
然后如果需要返回JSON:
if ($request->expectsJson()) {
return response()->json(['error' => $msg], $code);
}
答案 2 :(得分:0)
或者使用它,对我来说更干净:
try {
$resource = Model::findorfail($id);
} catch (\Illuminate\Database\Eloquent\ModelNotFoundException $e) {
return response([
'status' => 'ERROR',
'error' => '404 not found'
], 404);
}