WellRESTed is a library for creating RESTful APIs and websites in PHP that provides abstraction for HTTP messages, a powerful middleware system, and a flexible router.
<?php
namespace App;
use DI;
use Psr\Container\ContainerInterface;
use WellRESTed\Server;
require_once 'vendor/autoload.php';
$builder = new DI\ContainerBuilder();
$builder->addDefinitions([
    Server::class => function (ContainerInterface $c): Server {
        $server = new Server();
        $server->add(ErrorMiddleware::class);
        $router = $server->createRouter();
        $server->addRoute($router);
        $router
            ->register('GET', '/', HomeHandler::class)
            ->register('GET', '/cats/', CatsListHandler::class)
            ->register('POST', '/cats/', [
                AuthMiddleware::class,
                JsonMiddleware::class,
                CatCreateHandler::class
            ])
            ->register('GET', '/cats/{id}', CatHandler::class)
            ->register('PUT', '/cats/{id}', [
                AuthMiddleware::class,
                JsonMiddleware::class,
                CatUpdateHandler::class
            ])
            ->register('DELETE', '/cats/{id}', [
                AuthMiddleware::class,
                CatDeleteaHandler::class
            ]);
        return $server;
    }
]);
$container = $builder->build();
$server = $container->get(Server::class);
$server->respond();Requests and responses are built to the interfaces standardized by PSR-7 making it easy to share code and use components from other libraries and frameworks.
Build your application using handlers and middleware implementing the interfaces defined by PSR-15.
Use a router to map HTTP methods and paths to hanlders, middleware, or sub-routers.
Use URI templates
                like /foo/{bar}/{baz}, /list/{items*}, or
                {/path*} that match patterns of paths and provide captured
                variables.
WellRESTed's dispatcher can delay instantiating handlers until they're needed, so even large apps can stay light weight.
WellRESTed does not supply a DI container, but can work with any an any PSR-11 container.
The recommended method for installing WellRESTed is to use Composer. Add an entry for WellRESTed in your project’s composer.json file.
{
  "require": {
     "wellrested/wellrested": "^6"
  }
}The documentaiton for WellRESTed is available at https://wellrested.readthedocs.io