Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Http Idempotency Bundle

Http Idempotency Bundle Laravel Package

alkinbg/http-idempotency-bundle

View on GitHub
Deep Wiki
Context7

HTTP request idempotency for Symfony using Idempotency-Key, request fingerprints, shared state, and Symfony Lock.

Frequently asked questions about Http Idempotency Bundle
What is alkinbg/http-idempotency-bundle?
It is a Symfony bundle that adds HTTP request idempotency using an Idempotency-Key header, request fingerprints, shared state storage, and Symfony Lock. It is aimed at Symfony applications rather than Laravel, but Laravel developers can review the approach when designing idempotent APIs.
How do I install alkinbg/http-idempotency-bundle?
Install it with Composer using composer require alkinbg/http-idempotency-bundle. Because it is a Symfony bundle, you then register or enable the bundle according to your Symfony application setup. Laravel does not use Symfony bundles in the same way, so it is not a drop-in Laravel package.
Does this package work with Laravel?
No, it is a Symfony bundle, not a Laravel package, so it will not install and register as a typical Laravel service provider or middleware. There is no Laravel version support to configure because the package targets Symfony. Laravel teams can still use it as a reference for Idempotency-Key handling, fingerprints, and locking, or adapt the pattern into Laravel middleware.
How does Idempotency-Key handling work in this bundle?
The bundle uses the Idempotency-Key request header to identify repeated client requests. It combines that key with a request fingerprint and shared state so retries can be recognized and handled consistently. Symfony Lock helps coordinate concurrent requests that carry the same key.
What are request fingerprints used for?
Request fingerprints help distinguish whether a repeated Idempotency-Key refers to the same request payload or a different one. This prevents a client from reusing a key for unrelated operations. The exact fingerprint inputs depend on the bundle configuration.
What shared state storage does the bundle need?
The bundle relies on shared state to remember idempotency keys and their outcomes across requests. In a Symfony app this generally means a cache or storage backend that all application instances can access. You should choose a shared store rather than per-process memory for production.
Why does it use Symfony Lock?
Symfony Lock is used to coordinate concurrent requests, reducing race conditions when two requests arrive with the same Idempotency-Key. A lock helps ensure only one request performs the protected operation while others wait or receive the stored result. This matters in multi-worker production deployments.
How do I test idempotent endpoints with this bundle?
Test it by sending the same Idempotency-Key more than once and asserting that the side effect happens once and the response is replayed or handled consistently. Also test different payloads with the same key and concurrent requests. Use your Symfony test setup and a shared test storage backend that matches production behavior.
Is it safe for production use?
It can be suitable for production when configured with shared state and Symfony Lock, because concurrency and retries are the core problems it addresses. You should verify storage reliability, lock timeouts, and failure behavior under load. Also ensure your endpoints define which responses and side effects are safe to replay.
How is it maintained and what alternatives exist?
Maintenance should be checked on the GitHub repository, including recent commits, releases, and issue activity. For alternatives, compare Symfony idempotency bundles and Laravel-specific idempotency middleware, and evaluate whether you need a full bundle or a small custom middleware. The best choice depends on your framework and storage infrastructure.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib