missionx-co/laravel-prevent-duplicate-request
最新稳定版本:0.1.4
Composer 安装命令:
composer require missionx-co/laravel-prevent-duplicate-request
包简介
A Laravel package that prevents duplicate API requests using Idempotency keys or dynamically generated keys based on request URL and input.
README 文档
README
A Laravel package to prevent duplicate API requests using either Idempotency Keys or dynamically generated keys based on the request URL and input.
Installation
Install the package via Composer:
composer require missionx-co/laravel-prevent-duplicate-request
Publish the configuration file
php artisan vendor:publish --tag="prevent-duplicate-request-config"
Usage
Middleware Setup
Add the preventDuplicateRequests middleware to your API middleware group
Laravel 11
// bootstrap/app.php ->withMiddleware(function (Middleware $middleware) { $middleware->api(append: [ 'preventDuplicateRequests' ]); })
Laravel 10
// app/Http/Kernel.php protected $middlewareGroups = [ 'web' => [ // ... ], 'api' => [ // ... 'preventDuplicateRequests', ], ];
Key Generation Algorithms
To prevent duplicate API requests, you can choose between two algorithms:
-
Idempotency Key: Use
\MissionX\LaravelPreventDuplicateRequest\UniqueKeyAlgorithms\IdempotencyKey::classto uniquely identify and deduplicate requests, ensuring the same key results in the same response. This requires the client to send an Idempotency-Key header with each request. -
Request Fingerprint: Use
\MissionX\LaravelPreventDuplicateRequest\UniqueKeyAlgorithms\RequestFingerprintGenerator::classto automatically generate a unique key based on the request URL and input. This is useful when you don't want to rely on the client to provide a key.
Configuring the Algorithm
Set the desired key generation algorithm in the configuration file (config/prevent-duplicate-request.php):
return [ 'key_algorithm' => \MissionX\LaravelPreventDuplicateRequest\UniqueKeyAlgorithms\RequestFingerprintGenerator::class, ];
统计信息
- 总下载量: 11
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-02-05