saad/api-debugger

轻松调试您的JSON API。

4.2.0 2019-02-02 13:21 UTC

This package is auto-updated.

Last update: 2024-08-29 03:58:17 UTC


README

Travis

轻松调试您的JSON API。

本包是对Laravel-API-Debugger包的增强,以添加对Lumen框架的兼容性。

在开发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,
      "time": 2.72,
      "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
        },
        {
          "connection": "posts",
          "query": "select * from `posts` where `author` = '1';",
          "time": 1
        }
      ],
      "duplicated": [
        {
          "connection": "posts",
          "query": "select * from `posts` where `author` = '1';",
          "total_time": 2.34,
          "executions_count": 2
        }
      ]
    },
    "dump": [
      "foo",
      [
        1,
        2,
        "bar"
      ]
    ]
  }
}

安装

本帮助仅适用于Laravel 5.4。早期版本的说明可以在本仓库的相关分支中找到。

需要PHP >=5.5.9+或HHVM 3.3+,Composer和Laravel 5.4+。

安装

composer require saad/api-debugger

Lumen专用

1- 注册包服务提供者

// bootstrap/app.php
 $app->register(Lanin\Laravel\ApiDebugger\ServiceProvider::class);

2- 此包将根据api-debugger.enabled配置启用/禁用,该配置依赖于环境变量值ENABLE_API_DEBUG

您可以复制配置文件api-debugger.phpconfig目录,并根据需要自定义它,然后您需要在bootstrap/app.php中注册新的配置文件。

// bootstrap/app.php
 $app->configure('api-debugger');

Laravel 5.4专用

打开config/app.php,并将以下内容添加到providers键中。

Lanin\Laravel\ApiDebugger\ServiceProvider::class,

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

'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此包,并通过提交拉取请求来增强功能来贡献。