meekframework / http
此包已被弃用且不再维护。作者建议使用 meraki/http 包代替。
v0.3.0
2017-10-31 04:23 UTC
Requires
- php: ^7.1
- psr/http-message: ^1.0
Requires (Dev)
- phpdocumentor/phpdocumentor: ^2.9
- phpunit/phpunit: ^6.3
- zendframework/zend-diactoros: ^1.6
This package is not auto-updated.
Last update: 2020-11-22 11:58:17 UTC
README
一个符合 PSR7 规范的库,用于处理 HTTP 请求、响应、中间件和错误。
安装
使用 Composer
composer require meekframework/route
使用方法
以下是一个示例,展示了如何将 Diactoros 和 FastRoute 与 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。