首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何以JSON格式发送Laravel错误响应

如何以JSON格式发送Laravel错误响应
EN

Stack Overflow用户
提问于 2015-02-11 08:35:55
回答 8查看 27.3K关注 0票数 21

我正在移动到laravel 5,并且在HTML页面中收到来自laravel的错误。如下所示:

代码语言:javascript
复制
Sorry, the page you are looking for could not be found.

1/1
NotFoundHttpException in Application.php line 756:
Persona no existe
in Application.php line 756
at Application->abort('404', 'Person doesnt exists', array()) in helpers.php line

当我使用laravel 4时,一切正常,错误是json格式的,这样我就可以解析错误消息并向用户显示一条消息。json错误的一个例子:

代码语言:javascript
复制
{"error":{
"type":"Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException",
"message":"Person doesnt exist",
"file":"C:\\xampp\\htdocs\\backend1\\bootstrap\\compiled.php",
"line":768}}

我如何在laravel 5中实现这一点。

很抱歉我的英语不好,非常感谢。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2015-08-16 21:41:09

我之前在这里寻找如何在Laravel中的任何地方抛出json异常,答案让我走上了正确的道路。对于任何在搜索类似解决方案时发现这一点的人来说,我是如何在整个应用程序中实现的:

将此代码添加到

方法

代码语言:javascript
复制
if ($request->ajax() || $request->wantsJson()) {
    return new JsonResponse($e->getMessage(), 422);
}

将此代码添加到处理对象的方法中:

代码语言:javascript
复制
if ($request->ajax() || $request->wantsJson()) {

    $message = $e->getMessage();
    if (is_object($message)) { $message = $message->toArray(); }

    return new JsonResponse($message, 422);
}

然后在你想要的任何地方使用这段通用的代码:

代码语言:javascript
复制
throw new \Exception("Custom error message", 422);

它会将ajax请求之后抛出的所有错误转换为Json异常,准备好以任何您想要的方式使用:-)

票数 25
EN

Stack Overflow用户

发布于 2016-02-04 07:00:51

Laravel 5.1

为了将HTTP状态码保存在意外异常中,比如404,500,403...

这是我使用的(

app/Exceptions/Handler.php

):

代码语言:javascript
复制
public function render($request, Exception $e)
{
    $error = $this->convertExceptionToResponse($e);
    $response = [];
    if($error->getStatusCode() == 500) {
        $response['error'] = $e->getMessage();
        if(Config::get('app.debug')) {
            $response['trace'] = $e->getTraceAsString();
            $response['code'] = $e->getCode();
        }
    }
    return response()->json($response, $error->getStatusCode());
}
票数 12
EN

Stack Overflow用户

发布于 2015-04-02 22:15:09

Laravel 5在

..。The The The

方法可以用来以不同的方式呈现特定的异常,即

代码语言:javascript
复制
public function render($request, Exception $e)
{
    if ($e instanceof API\APIError)
        return \Response::json(['code' => '...', 'msg' => '...']);
    return parent::render($request, $e);
}

就我个人而言,我使用

当我想要返回一个API错误时抛出一个通用的异常。相反,您可以只检查请求是否为AJAX (

),但我认为显式设置API异常看起来更清晰,因为您可以扩展

类并添加所需的任何函数。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28444556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档