私はLaravel 5.3を使用しています。ユーザーが特定のIDを要求するAPIはほとんどありません。 id
が存在しない場合の例URLが
example.com/api/event/{id}/subscribe
Laravel 5 - 存在しないオブジェクトを要求するAPIのグローバル例外ハンドラ
通常イベントをサブスクライブするためにイベント場合
だから私はチェックを追加し は、Laravelは「非オブジェクトのプロパティを取得しようとすると、」エラーメッセージで応答500を返します。モデル「ID」のIDが渡されたすべてのコントローラには以下のような存在である:
$event = Event::find($id)
if ($event) {
// return json data
}
else {
return response()->json([
'status' => 'object not found'
], 404);
}
私の質問は、オブジェクトが要求されたかどうかを確認するために、グローバルにこれを処理するために任意のより良い解決策は存在しないのですか?私の現在の解決策はここにありますが、より良いものがあるはずです。
このコードを私のapp/Exception/Handler.php
に追加すると、すべてのapiリクエストの存在しないオブジェクトは特定のjsonメッセージで404を返します。したがって、APIコンシューマはオブジェクトIDが有効でないことを認識します。
public function render($request, Exception $exception)
{
// global exception handler if api request for non existing object id
if ($request->wantsJson() && $exception->getMessage() == 'Trying to get property of non-object') {
return response()->json([
'status' => 'object requested not found'
], 404);
}
return parent::render($request, $exception);
}
ありがとうございます!
'Illuminate \ Database \ Eloquent \ ModelNotFoundException;を使用してください。ありがとう。また、 'wantsJson()'を使うコードを少し変更します – xmhafiz