zoukankan      html  css  js  c++  java
  • 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(BarryvdhDebugbarLumenServiceProvider::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);
            });
        }
  • 相关阅读:
    引入C/C++动态库
    Linux新手常用命令
    使用Dotfunsctor
    C#上传数据到HTTP,HTTPS 代码示例
    C#多个泛型约束问题
    创建DataTable与DataGridView进行绑定
    递归迭代vector三种方法实现二路归并排序
    区间贪心算法
    递归和非递归实现二叉树的遍历
    C语言实现全排列和回溯法总结
  • 原文地址:https://www.cnblogs.com/guohong-hu/p/12548287.html
Copyright © 2011-2022 走看看