Lumen/Laravel调试API接口利器laravel-debugbar
程序员文章站
2022-11-22 11:27:42
Laravel、Lumen打印sql每次都要在手动加调试代码挺麻烦的。本文主要介绍另一个调试神器 barryvdh/laravel-debugbar 先讲一下效果。可以调试带页面的接口,也可以调试单纯的json api接口。 图一:请求的接口列表,可以根据一些条件进行过滤。红色划线的部分是我自己修改 ......
laravel、lumen打印sql每次都要在手动加调试代码挺麻烦的。本文主要介绍另一个调试神器
先讲一下效果。可以调试带页面的接口,也可以调试单纯的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); });
最后放一下其他人写的教程供参考
学院君
如果很懒不想安装,给一下我之前用过的一个助手函数打印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); }); }