此包已被弃用且不再维护。作者建议使用 meraki/http 包代替。

v0.3.0 2017-10-31 04:23 UTC

This package is not auto-updated.

Last update: 2020-11-22 11:58:17 UTC


README

Scrutinizer Build Status Scrutinizer Code Quality Scrutinizer Code Coverage Packagist Latest Stable Version MIT License

一个符合 PSR7 规范的库,用于处理 HTTP 请求、响应、中间件和错误。

安装

使用 Composer

composer require meekframework/route

使用方法

以下是一个示例,展示了如何将 DiactorosFastRoute 与 Meek HTTP 组件一起集成

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.md

致谢/作者

许可

MIT 许可证 (MIT)。更多信息请参阅 LICENSE.md