lanin / laravel-api-debugger
轻松调试您的 JSON API。
Requires
- php: >=7.1
- illuminate/support: >=5.4.0
Requires (Dev)
- mockery/mockery: ^1.3.1
- orchestra/testbench: >=3.4.0
- phpunit/phpunit: ^7
README
轻松调试您的 JSON API。
在开发 JSON API 时,有时您需要调试它,但如果您使用 dd()
或 var_dump()
,则会破坏输出,这会影响正在与您的 API 一起工作的所有客户端。调试器是为了为您提供所有调试信息而不破坏输出而设计的。
{ "posts": [ { "id": 1, "title": "Title 1", "body": "Body 1" }, { "id": 2, "title": "Title 2", "body": "Body 2" } ], "meta": { "total": 2 }, "debug": { "database": { "total": 2, "items": [ { "connection": "accounts", "query": "select * from `users` where `email` = 'john.doe@acme.com' limit 1;", "time": 0.38 }, { "connection": "posts", "query": "select * from `posts` where `author` = '1';", "time": 1.34 } ] }, "dump": [ "foo", [ 1, 2, "bar" ] ] } }
安装
本帮助仅适用于 Laravel 5.4。早期版本的说明可以在本存储库的相关分支中找到。
PHP >=5.5.9+ 或 HHVM 3.3+,Composer 和 Laravel 5.4+ 是必需的。
要获取 Laravel Laravel-API-Debugger 的最新版本,只需将以下行添加到您的 composer.json
文件的 require 块中。
对于 PHP >= 7.1
"lanin/laravel-api-debugger": "^4.0"
对于 PHP < 7.1
"lanin/laravel-api-debugger": "^3.0"
然后,您需要运行 composer install
或 composer update
来下载它并更新自动加载器。
一旦安装了 Laravel-API-Debugger,您需要注册服务提供者。打开 config/app.php
并将以下内容添加到 providers 键。
对于 Laravel 5.4
Lanin\Laravel\ApiDebugger\ServiceProvider::class,
您还可以注册一个 Facade 以更方便地访问调试器方法。
对于 Laravel 5.4
'Debugger' => Lanin\Laravel\ApiDebugger\Facade::class,
对于 Laravel 5.5,包支持 包发现 功能。
通过运行以下命令将配置文件复制到您的项目
php artisan vendor:publish --provider="Lanin\Laravel\ApiDebugger\ServiceProvider"
JSON 响应
在扩展填充您的答案之前,它将尝试区分它是否是 JSON 响应。它将通过验证是否是 JsonResponse 实例来完成此操作。最佳方式是在控制器的方法中返回 response()->json();
。
此外,请小心处理您返回的内容。如果您的答案未包含任何类型的 data
属性(如上面的示例中的 pages
),则前端可能会因为等待特定的属性集而损坏,但它会返回额外的 debug
属性。
因此,返回响应的最佳方式如下
$data = [ 'foo' => 'bar', 'baz' => 1, ]; return response()->json([ 'data' => [ 'foo' => 'bar', 'baz' => 1, ], ]);
有关 JSON API 中更好的实践更多信息,请访问此处 https://jsonapi.fullstack.org.cn/
调试
调试器的两个主要任务是输出变量并收集有关您的请求的任何附加信息。
变量转储
调试器提供了在您的 JSON 答案中直接输出任何变量的简单方法。当您必须紧急调试生产环境时,此功能非常有用。
$foo = 'foo'; $bar = [1, 2, 'bar']; // As a helper lad($foo, $bar); // or as a facade \Debugger::dump($foo, $bar);
您可以同时输出任意多个变量,它们将出现在答案中。
注意!当然,这不是在生产环境中调试的最佳方式,但有时这是唯一的方式。因此,请小心使用,因为每个人都会看到您的输出,但至少调试不会破坏您的客户端。
收集数据
注意!默认情况下,调试器仅在您设置 APP_DEBUG=true
时收集数据。因此,您不必担心有人在生产中看到您的系统数据。您可以通过向 .env 文件中添加 API_DEBUGGER_ENABLED=true|false
或通过更改配置文件中 enabled
的值来覆盖此设置。
所有可用的集合都可以在 api-debugger.php
配置文件中找到,您可以根据需要发布和更新。
查询集合
该集合监听所有查询事件,并将它们以 connections
、query
、time
结构记录下来。
缓存集合
它可以显示缓存命中、未命中、写入和遗忘的情况。
性能分析集合
它允许您测量执行代码中的动作所需的时间。有两种方式可以实现。
自动
Debugger::profileMe('event-name', function () { sleep(1); });
或手动
Debugger::startProfiling('event-name'); usleep(300); Debugger::stopProfiling('event-name');
还有辅助工具可用
lad_pr_start(); lad_pr_stop(); lad_pr_me();
扩展
您可以轻松地将自己的数据集合添加到调试输出中。只需查看包本身是如何实现的,然后重复您想要的任何操作(例如 HTTP 请求)即可。
贡献
请随时fork此包,并通过提交pull请求来增强功能来贡献。