laravel在出错时不返回调用堆栈

时间:2017-11-03 11:42:44

标签: php laravel rest exception-handling

例如在我的REST Json API中:当我使用路由模型绑定调用路由并传递无效ID时,我得到:

{
    "message": "No query results for model [App\\Models\\User].",
    "exception": "Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException",
    "file": "D:\\allianz\\backend\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Exceptions\\Handler.php",
    "line": 199,
    "trace": [
        { ...

但是我不希望向API消费者展示这一点。 (或只是消息)。

2 个答案:

答案 0 :(得分:1)

您始终可以在App \ Exceptions \ Handler.php

中捕获异常

使用以下内容将异常导入到类中:

use \Illuminate\Database\Eloquent\ModelNotFoundException;

并在render方法中添加

if ($e instanceof ModelNotFoundException) {
    return response()->json([
        'message' => 'Record not found', //or modify it to display whatever message you want here
    ], 404);
}

答案 1 :(得分:1)

APP_ENV变量设置在什么位置?我相信调用堆栈在生产时不会被返回。