php – 如何使Laravel為JSON REST API返回自定義錯誤
我正在開發某種RESTful API.發生一些錯誤時,我會丟擲一個App :: abort($code,$message)錯誤.
問題是:我希望他用鍵“程式碼”和“訊息”丟擲一個json形成的陣列,每個陣列都包含上述資料.
Array ( [code] => 401 [message] => "Invalid User" )
有沒有人知道是否可能,如果是,我該怎麼做?
去你的app / start / global.php.
這將將401和404的所有錯誤轉換為自定義json錯誤,而不是Whoops stacktrace.加這個:
App::error(function(Exception $exception, $code) { Log::error($exception); $message = $exception->getMessage(); // switch statements provided in case you need to add // additional logic for specific error code. switch ($code) { case 401: return Response::json(array( 'code'=>401, 'message'=>$message ), 401); case 404: $message= (!$message ? $message = 'the requested resource was not found' : $message); return Response::json(array( 'code'=>404, 'message'=>$message ), 404); } });
這是處理此錯誤的眾多選項之一.
製作API最好建立自己的幫助器,如Responser :: error(400,’damn’),擴充套件了Response類.
有點像:
public static function error($code = 400, $message = null) { // check if $message is object and transforms it into an array if (is_object($message)) { $message = $message->toArray(); } switch ($code) { default: $code_message = 'error_occured'; break; } $data = array( 'code'=> $code, 'message'=> $code_message, 'data'=> $message ); // return an error return Response::json($data, $code); }
程式碼日誌版權宣告:
翻譯自:http://stackoverflow.com/questions/22414524/how-can-i-make-laravel-return-a-custom-error-for-a-json-rest-api