Simple and fully tested Laravel middleware for implementing idempotency in your API requests.
composer require bluebeetle/idempotency-middlewareAdd the middleware to your routes:
use BlueBeetle\IdempotencyMiddleware\Idempotency;
Route::middleware([Idempotency::class])->group(function () {
Route::post('/orders', [OrderController::class, 'store']);
});Send requests with an Idempotency-Key header (UUID v4):
POST /api/orders HTTP/1.1
Idempotency-Key: 6b3fd36c-24c6-4eb2-a764-bb6c91b33e56
Content-Type: application/json
{"product_id": 1, "quantity": 2}
Repeated requests with the same key return the cached response instead of processing again.
Full documentation is available at bluebeetle.pt/open-source/docs/idempotency-middleware.
composer testLicensed under the MIT license.