rich2k/laravel-api-debugger

轻松调试您的JSON API。

4.0.0 2020-07-09 10:34 UTC

README

Travis

轻松调试您的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 installcomposer update 来下载它并更新自动加载器。

一旦安装了Laravel-API-Debugger,您需要注册服务提供程序。打开 config/app.php 并将以下内容添加到providers键。

对于Laravel 5.4

Lanin\Laravel\ApiDebugger\ServiceProvider::class,

您还可以注册一个外观,以便更容易访问调试器方法。

对于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 时才会收集数据。因此,您不必担心有人在生产环境中看到您的系统数据。您可以通过将 API_DEBUGGER_ENABLED=true|false 添加到您的 .env 文件或更改配置文件中 enabled 的值来覆盖它。

所有可用的收集可以在 api-debugger.php 配置文件中找到,您可以按需发布和更新它。

QueriesCollection

此收集监听所有查询事件,并将它们以 connectionsquerytime 结构记录下来。

CacheCollection

它可以显示缓存命中、未命中、写入和忘记。

ProfilingCollection

它允许您测量执行代码中操作所需的时间。有两种方法可以做到这一点。

自动

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请求)。

贡献

请随时分支此包,通过提交拉取请求来增强功能来贡献。