amphp/http-server-router
amphp/http-server-router is a fast, async router for Amp’s HTTP server. It maps paths and methods to request handlers, supports route groups and parameters, and provides middleware-style dispatching for building clean, high-performance PHP microservices.
amphp/http-server, amphp/socket). This router only integrates with Amp—not ReactPHP, Swoole, or traditional FPM stacks.composer require amphp/http-server-router.use Amp\Http\Server\Router;
use Amp\Http\Server\Request;
use Amp\Http\Server\Response;
$router = new Router();
$router->addRoute('GET', '/hello', function (Request $request): Response {
return new Response(200, [], 'Hello, world!');
});
// Then pass `$router` to your Amp server’s `serve()` method
php server.php) and visit http://localhost:8080/hello.get(), post(), put(), etc. shortcuts for fluency:
$router->get('/users', $listUsersHandler);
$router->post('/users', $createUserHandler);
$api = new Router();
$api->get('/users', $listUsersHandler);
$router->mount('/api', $api); // Matches /api/users
$router->get('/users/{id:\d+}', function (Request $request, string $id): Response {
// $request->getAttribute('id') also works
return new Response(200, [], "User {$id}");
});
next() propagation:
$router->addRoute('GET', '/auth/*', function (Request $request, callable $next): Response {
$token = $request->getHeaderLine('Authorization');
if (!$token) throw new Amp\Http\Server\Exception\UnauthorizedException();
return $next($request);
});
/billing, /inventory) for maintainability./users/{id} before /users/*).* vs {var} wildcards: * matches any path segment, including /; {param} only matches non-empty segments without /. Use {param:.*} for greedy matching.$request->getAttribute('param') inside handlers—parse_str()-style params are not auto-populated.Response|Promise, not raw values. Blockers like sleep() or DB calls must use Amp’s async variants (e.g., Amp\MySQL, Amp\Postgres).$router->addRoute('*', '/{...}', fn() => new Response(404));
Router in Amp\Http\Server\Router\RequestHandler to unit-test handlers in isolation.amphp/http-server extensions (e.g., amphp/http-server-session)—this package focuses only on routing.How can I help you explore Laravel packages today?