atatus/laravel-atatus

Atatus PHP 中间件,适用于 Laravel

1.0.2 2023-06-23 09:51 UTC

This package is not auto-updated.

Last update: 2024-09-23 13:01:12 UTC


README

Atatus Laravel 中间件允许自动捕获 API 调用并将它们发送到 Atatus API 分析

如何安装

通过 Composer

$ composer require atatus/laravel-atatus

或将 'atatus/laravel-atatus' 添加到您的 composer.json 文件中。

如何使用

添加服务提供者

// In config/app.php

'providers' => [
  /*
   * Application Service Providers...
   */
    Atatus\Middleware\AtatusLaravelServiceProvider::class,
];

添加到中间件

如果网站根是您的 API,则添加到根级别

// In App/Http/Kernel.php

protected $middleware = [
  /*
   * The application's global HTTP middleware stack.
   *
   * These middleware are run during every request to your application.
   */
   \Atatus\Middleware\AtatusLaravel::class,
];

如果您只想为特定路由组的 API 添加跟踪,请将其添加到您的路由组中,但请确保从上面的全局中间件堆栈中删除。

// In App/Http/Kernel.php

protected $middlewareGroups = [
  /**
   * The application's API route middleware group.
   */
   'api' => [
        //
        \Atatus\Middleware\AtatusLaravel::class,
    ],
];

要跟踪特定路由,请使用特定路由的中间件设置。

发布包配置文件

$ php artisan vendor:publish --provider="Atatus\Middleware\AtatusLaravelServiceProvider"

设置配置

编辑 config/atatus.php 文件。

// In config/atatus.php

return [
    'logBody' => true,
    // 'debug' => false,
    // 'configClass' => 'MyApp\\MyConfigs\\CustomAtatusConfig'
];

有关其他配置选项,请参见以下内容。

配置选项

您可以在 config/atatus.php 文件中定义 Atatus 配置选项。

logBody

类型: 布尔型 可选,默认为 true,设置为 false 以从 Atatus 中删除请求和响应体记录。

debug

类型: 布尔型 可选,默认为 false,设置为 true 以使用 Illuminate\Support\Facades\Log 打印调试消息。

configClass

类型: 字符串 可选,一个字符串,用于表示包含附加函数的类的完整路径(包括命名空间)。该类可以位于任何命名空间中,只要提供完整的命名空间即可。

示例

return [
    'logBody' => true,
    'debug' => false,
    'configClass' => 'MyApp\\MyConfigs\\CustomAtatusConfig'
];

配置类 (可选)

由于配置钩子和函数不能放在 config/atatus.php 文件中,它们位于您创建的 PHP 类中。使用 configClass 选项设置此类的路径。您可以定义以下任何钩子

identifyUserId

类型: ($request, $response) => String 可选,一个函数,它接受一个 $request 和 $response 并返回一个用于 userId 的字符串。Atatus 自动通过 $request->user()['id'] 获取最终 userId。如果您使用非标准方式将用户注入到 $request 或想覆盖 userId,可以使用 identifyUserId。

identifyCompanyId

类型: ($request, $response) => String 可选,一个函数,它接受一个 $request 和 $response 并返回一个用于 companyId 的字符串。

maskRequestBody

类型: $body => $body 可选,一个函数,它接受一个 $body,这是一个表示 JSON 的关联数组,并返回一个关联数组,其中删除了任何信息。

maskResponseBody

类型: $body => $body 可选,与上面相同,但用于响应。

示例配置类

namespace MyApp\MyConfigs;

class CustomAtatusConfig
{

    public function maskRequestBody($body) {
      return $body;
    }

    public function maskResponseBody($body) {
      return $body;
    }

    public function identifyUserId($request, $response) {
      if (is_null($request->user())) {
        return null;
      } else {
        $user = $request->user();
        return $user['id'];
      }
    }

    public function identifyCompanyId($request, $response) {
      return "comp_acme_corporation";
    }

}
  • 在您的 config/atatus.php 文件中
return [
    'logBody' => true,
    'debug' => false,
    'configClass' => 'MyApp\\MyConfigs\\CustomAtatusConfig'
]

请确保在更改配置后更新缓存

如果您启用了配置缓存,在您更新配置后,请务必再次运行 php artisan config:cache 以确保配置已更新。

致谢

  • Mixpanel 的 PHP 客户端
  • Moesif Laravel Middleware
  • Jonny Pickett

需要 PHP JSON 扩展。

确保您安装了启用 JSON 扩展的 PHP 更多信息