sheridan/version-middleware

PSR-7 middleware for managing routable versioning.

Maintainers

Package info

github.com/sheridans/psr7-version-middleware

pkg:composer/sheridan/version-middleware

Statistics

Installs: 23

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v2.0.0 2026-03-18 00:56 UTC

This package is auto-updated.

Last update: 2026-03-18 01:05:09 UTC


README

PSR-15 middleware that extracts API version prefixes from the URL path. Works with any PSR-15 framework (Mezzio, Slim, etc.).

Installation

Install using composer:

$ composer require sheridan/version-middleware

Usage

Add to pipeline

use Psr7Versioning\VersionMiddleware;
...
$app->pipe(ServerMiddleware::class);
$app->pipe(VersionMiddleware::class);
$app->pipe(RouteMiddleware::class);
...

Routing

Now you can add route based on path, for example:

$app->get('/home', 'Handler\HomePageHandler::class', 'home');
$app->get('/dev/home', 'Handler\dev\HomePageHandler::class', 'home.dev');
$app->get('/latest/home', 'Handler\latest\HomePageHandler::class', 'home.latest');
$app->get('/legacy/home', 'Handler\legacy\HomePageHandler::class', 'home.legacy');
$app->get('/v1/home', 'Handler\v1\HomePageHandler::class', 'home.v1');
$app->get('/v2/home', 'Handler\v2\HomePageHandler::class', 'home.v2');

Built in version routes are

  • dev
  • latest
  • legacy
  • vnnn (where nnn is a number)

To get the version number from a request:

use Psr7Versioning\VersionMiddleware;
...
public function handle (ServerRequest $request) : ResponseInterface
{
  // get current version (ie dev | latest)
  $version = $request->getAttribute(VersionMiddleware::class);
}