异常处理 – Laravel异常处理 – 如何使用API​​和Html处理异常

Api电话

http://localhost:8888/api/v1/users/100 //doesn't exist

Html电话

http://localhost:8888/admin/users/100 //doesn't exist

显然,我不希望Html Call异常返回json数据,我不希望Api Call返回Html Data.

我不是控制器中的异常处理.我在UserRepository中处理异常.因此,我的控制器只是从用户存储库返回结果.

class Sentry2UserRepository implements UserInterface {
public function findById($id) {
    try {
        return Sentry::findUserById($id);
    }
    catch (\Cartalyst\Sentry\Users\UserNotFoundException $e) {
    // Do something here
    return false;
        }
}
}

问题1:将错误传递回控制器的正常/正确方法是什么,以便它知道要显示什么?

问题2:异常/错误是否有标准的json API格式?

问题3:Web UI使用内部JsonApi是一种好习惯吗?或者我是否正在使用我的WebUi控制器以正确的方式查询与Api相同的存储库?

最佳答案
在您的filters.php中尝试这个魔术:

App::error(function(Exception $exception, $httpCode)
{
    if (Request::is('api/*')){
         return Response::json( ['code' => $exception->getCode(), 'error' => $exception->getMessage()], $httpCode );
    }else{
         $layout = View::make('layouts.main');
         $layout->content = View::make('errors.error')->with('code', $exception->getCode())->with('error', $exception->getMessage())->with('httpCode',$httpCode);
         return Response::make($layout, $httpCode);
    }
});

转载注明原文:异常处理 – Laravel异常处理 – 如何使用API​​和Html处理异常 - 代码日志