3

最基本的是,我想处理来自我的 API 的错误,并确保通过 API 抛出的所有错误都给出 json 响应,但对于网站,我希望发送 HTML 响应。

如果有更好的方法,那么纯粹应用来自http://laravel.com/docs/requests#request-information的逻辑并使用类似的东西:

if (Request::is('admin/*'))
{
    //
}

这可行,但对于可能抛出的每种异常类型似乎有点笨拙?该文档似乎没有任何内容,但我在徘徊是否有任何可能的工作,所以可以为设置路由通配符应用错误?就像是:

App::error('admin/*', function(Exception $exception)
{
    Log::error($exception);
});
4

2 回答 2

2

您可以添加一个 App::error 过滤器并在该过滤器中进行路由检查,然后以 json 格式发送响应。像这样一个简单的例子:

App::error(function(Exception $exception) {
    if (Request::is('api/*')) {
        $message = get_class($exception) . ":: message: " . $exception->getMessage();       
        return Response::json(["success"=>false,"message"=>$message]);
    }
});
于 2015-03-08T07:16:39.657 回答
1

您可以使用路由组http://laravel.com/docs/routing#route-groups并对组应用过滤器,或者如果您在前缀路由组http中声明它,则可以使用 App::error 方法://four.laravel.com/docs/routing#route-prefixing。我不是 100% 的方法是否可行,但如果你运气不好,Laravel IRC 非常活跃,请参阅http://laravel.io/irc以获取快速简单的 Web 客户端。

于 2013-09-19T15:18:37.093 回答