littlebookboy/laravel-request-recorder

帮助您轻松记录每个请求和响应信息。

v1.4.1 2021-06-26 06:30 UTC

This package is auto-updated.

Last update: 2024-09-26 13:44:13 UTC


README

说明

记录器部分,每次客户端发送请求,通过api路由时,将内容信息记录到数据库中。允许客户端自定义请求和响应的X-Correlation-ID,若自定义的X-Correlation-ID与数据库冲突,则响应会设置为409表示冲突。响应部分,是系统完成请求处理后,产生响应,才将此内容写入数据库。

安装

composer require littlebookboy/laravel-request-recorder

注册服务提供者

LittleBookBoy\Request\Recorder\RequestRecorderServiceProvider::class,

发布迁移

php artisan vendor:publish --provider="LittleBookBoy\Request\Recorder\RequestRecorderServiceProvider"

创建数据表

php artisan migrate

用法

设置api路由,例如请求搜索指定id用户

Route::get('user/{id}', 'UserController@show');

新增控制器

php artisan make:controller UserController

对应控制器 UserController

public function show()
{
    return collect([
        'name' => 'littlebookboy',
        'saying' => 'Hello Recorder',
    ])->toJson();
}

记录开关/path/to/project/config/request-recorder.phpenabled false表示关闭记录器

'enabled' => false,

若要变更记录分组可设置group,设为api表示请求从api route进来都会被记录

'group' => 'api'

排除

实际中,有时需要让系统排除某些request不要写入,本套件提供了两种排除记录的方式

  1. 排除指定http method,您可以在config中设置except,表示要记录除了这些方法之外的请求,可设置的方法有'GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS',例如设置了GET,系统将忽略记录所有get请求
  2. 排除指定route name with http code,您可以在config中设置skip_routes,将经过命名的路由设置到route_name,并选择要过滤的状态码,若要全部过滤,可填写*或留空

配置示例

/**
 * - enabled : true or false
 * - group : route middleware group name
 * - except : 僅記錄除了這些方法之外的請求, 'GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'
 * - skip_routes : 僅記錄除了這些路由之外的請求, 也可限定只排除該路由的某些 rsponse http code
 */
'recorder' => [
    'enabled' => true,
    'group' => 'api',
    'except' => ['GET'],
    'skip_routes' => [
        [
            'route_name' => 'route.name.1',
            'http_code' => ['201']
        ],
        [
            'route_name' => 'route.name.2',
            'http_code' => ['409', '422']
        ],
        [
            'route_name' => 'route.name.3',
            'http_code' => ['*']
        ]
    ]
]

记录数据