Lumen/Laravel調試API接口利器laravel-debugbar


Laravel、Lumen打印sql每次都要在手動加調試代碼挺麻煩的。本文主要介紹另一個調試神器 barryvdh/laravel-debugbar

 先講一下效果。可以調試帶頁面的接口,也可以調試單純的json api接口。

圖一:請求的接口列表,可以根據一些條件進行過濾。紅色划線的部分是我自己修改composer保增加上去的選項,后面一起放出composer倉庫鏈接。

 

圖二、查看異常(就不用到服務器看日志文件了) 

圖三、打印sql(所有sql一目了然)

 

 

 還有其他幾個面板,就不截圖了。

安裝步驟:

1、安裝composer包

# 原版composer包,請求接口列表沒有我圖一划線那幾個篩選項
composer require barryvdh/laravel-debugbar composer require barryvdh/laravel-debugbar --dev //僅開發環境安裝
# 我修改的過的composer包
composer require evan766/laravel-debugbar composer require evan766/laravel-debugbar --dev //僅開發環境安裝

2、注冊服務提供者。該composer包同同時支持laravel和lumen,如果是lumen框架使用,注冊的服務提供者要換成lumen的服務提供者

#bootstrap/app.php

if (env('APP_ENV') != 'production' && env('APP_DEBUG') === true) { $app->register(Barryvdh\Debugbar\LumenServiceProvider::class); }

3、修改配置文件。將包中的debugbar.php配置文件放到Lumen項目的config目錄。

注意些以下幾個配置:

#是否啟用監聽調試,總開關,配置成 true開啟
'enabled' => env('DEBUGBAR_ENABLED', null),

# 將調試頁面注入到你項目的運行的一個view頁面,在右下角出來一個調試標
'inject' => true,

4、修改app/Exceptions/Handler.php,所有異常加入到debugbar收集的信息中

 public function report(Exception $e)
    {// 如果開發環境並且打開調試模式,將異常加入到debugbar調試工具中
        if (config('app.env') != 'production' && env('APP_DEBUG') === true) {
            debugbar()->addThrowable($e);
        }
        
        parent::report($e);
    }

 

4、特別提示,對於沒有頁面的純api接口的調試。單獨定義一個路由渲染一個給debugbar注入調試信息的view頁面。然后你從任意地方(postman、app、前段項目)請求接口,點開右下角的調試按鈕,通過篩選項過濾出你要查看的api請求就行。

可以添加一個單獨的路由文件

<?php
// debugbar 調試工具頁面
$router->get('debugbar', function () {
 
    if (env('APP_ENV') != 'production' && env('APP_DEBUG') === true) {
        return view('debug_tool.debugbar');
    }
    abort(404);
});

最后放一下其他人寫的教程供參考

學院君  https://xueyuanjun.com/post/2774.html

 

如果很懶不想安裝,給一下我之前用過的一個助手函數打印sql

// 可以用這個助手函數打印
  function getSql ()
    {
        app('db')->listen(function ($sql) {
            $singleSql = $sql->sql;
            if ($sql->bindings) {
                foreach ($sql->bindings as $replace) {
                    $value = is_numeric($replace) ? $replace : "'" . $replace . "'";
                    $singleSql = preg_replace('/\?/', $value, $singleSql, 1);
                }
            }
            dump($singleSql);
        });
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM