MeekFramework Http Component
![Scrutinizer Build Status][scrutinizer-build-image]
![Scrutinizer Code Quality][scrutinizer-code-quality-image]
![Scrutinizer Code Coverage][scrutinizer-code-coverage-image]
, (*1)
A PSR7 compliant library for handling HTTP requests, responses, middleware and errors., (*2)
Installation
With Composer:, (*3)
composer require meekframework/route
Usage
Here is an example integrating Diactoros and FastRoute together with the Meek HTTP component:, (*4)
require __DIR__ . '/vendor/autoload.php';
use FastRoute\simpleDispatcher;
use FastRoute\RouteCollector;
use FastRoute\Dispatcher;
use Meek\Http\ClientError;
use Meek\Http\ClientError\MethodNotAllowed;
use Meek\Http\ClientError\NotFound;
use Zend\Diactoros\ServerRequestFactory;
use Zend\Diactoros\Response\TextResponse;
use Zend\Diactoros\Response\SapiEmitter;
$dispatcher = simpleDispatcher(function(RouteCollector $r) {
$r->addRoute('GET', '/users', 'get_all_users_handler');
$r->addRoute('GET', '/user/{id:\d+}', 'get_user_handler');
$r->addRoute('GET', '/articles/{id:\d+}[/{title}]', 'get_article_handler');
});
$request = ServerRequestFactory::fromGlobals();
$routeInfo = $dispatcher->dispatch($request->getMethod(), $request->getRequestTarget());
try {
switch ($routeInfo[0]) {
case Dispatcher::NOT_FOUND:
throw new NotFound();
break;
case Dispatcher::METHOD_NOT_ALLOWED:
$allowedMethods = $routeInfo[1];
throw new MethodNotAllowed($allowedMethods);
break;
case Dispatcher::FOUND:
$response = call_user_func_array($routeInfo[1], $routeInfo[2]);
break;
}
} catch (ClientError $httpClientError) {
$response = new TextResponse((string) $httpClientError); // response body...
$response = $httpClientError->prepare($response); // add headers, code, etc...
}
(new SapiEmitter())->emit($response);
API
Contributing
See CONTRIBUTING.md., (*5)
Credits/Authors
License
The MIT License (MIT). Please see LICENSE.md for more information., (*6)