Giter Club home page Giter Club logo

replay's Introduction

๐Ÿ“ฝ Replay

A simple package for handling idempotent requests in Laravel.

Any routes using the Replay middleware will check for whether an incoming request meets certain criteria, and if so, it will cache the request for 24 hours so that any subsequent requests will always receive the same response.

Installation

Require Replay using Composer:

composer require kayrunm/replay

Usage

To get started with using Replay, all you need to do is attach the Replay middleware to whichever routes you wish to allow for idempotent requests. For example:

use Kayrunm\Replay\Replay;

Route::post('/account/{account}/transfer', [TransferController::class, 'store'])->middleware(Replay::class);

Configuration

Replay works out-of-the-box, but you can configure it further to fit your needs. To get started, publish the config file with the following command:

php artisan vendor:publish --tag="replay"

Strategies

This package uses the strategy pattern for both determining which requests should be idempotent and for storing their responses in the cache. You can view the default strategies for these below:

If you decide to implement your own strategies for either of the above, simply update the config file with the relevant strategies, for example:

'strategies' => [

    'caching' => \Acme\CustomCacheStrategy::class,
    
    'idempotency' => \Acme\CustomIdempotencyStrategy::class,
    
],

You can also customise the header used for the idempotency key (which is used in DefaultIdempotencyStrategy, which you could change to use a query parameter, if you wished), as well as how long an idempotent request should stay in the cache (which is used in DefaultCacheStrategy)

Licence

Replay is an open-sourced software licensed under the MIT license.

replay's People

Contributors

jacretney avatar kayrunm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

jacretney

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.