Laravel将所有类型的异常作为JSON

时间:2016-03-18 14:02:17

标签: php json laravel exception

我正在通过Laravel 5.2构建我的应用程序作为API,我需要将所有类型的异常作为json,无论错误代码是什么。

我做了类似的事情:

/**
 * Render an exception into an HTTP response.
 *
 * @param  \Illuminate\Http\Request $request
 * @param  \Exception $e
 * @return \Illuminate\Http\Response
 */
public function render($request, Exception $e)
{
    return response([
        'success' => false,
        'error' => [
            'code' => $e->getCode(),
            'message' => $e->getMessage(),
        ],
    ], $this->convertExceptionToResponse($e)->getStatusCode());
}

并且它做了很多诀窍,但显然这不够好,因为如果我收到404错误,$e->getMessage为空。

404错误回复示例:

{
  "success": false,
  "error": {
    "code": 0,
    "message": ""
  }
}

以json的形式回复异常的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

可能你应该尝试:

public function render($request, Exception $e)
{
    return response(json_encode([
            'success' => false,
            'error' => [
                'code' => $e->getCode(),
                'message' => $e->getMessage(),
            ],
        ]), $this->convertExceptionToResponse($e)->getStatusCode())
        ->header('Content-Type', 'application/json');
}