shailesh-matariya/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,

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

对于Laravel 5.4

'Debugger' => Lanin\Laravel\ApiDebugger\Facade::class,

对于Laravel 5.5,包支持包发现功能。

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.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请求)进行重复操作即可。

贡献

请随意fork此包,并通过提交pull请求来提交增强功能的贡献。