atatus / laravel-atatus
Atatus PHP 中间件,适用于 Laravel
Requires
- php: >=5.4.0
- ext-curl: *
- ext-json: *
- ext-mbstring: *
- apimatic/jsonmapper: ~1.0.0
- mashape/unirest-php: ~3.0.1
Requires (Dev)
- phpunit/phpunit: ~7.0
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 更多信息。