bronsted / psr-http
Psr-http
v2.0
2023-08-21 12:47 UTC
Requires
- php: ^8.1
- bronsted/fiberloop: ^2.0
- kekos/multipart-form-data-parser: ^1.0
- php-di/php-di: ^7.0
- psr/http-client: ^1.0
Requires (Dev)
- colinodell/psr-testlogger: ^1.2
- nyholm/psr7: ^1.5
- phpunit/phpunit: ^10.0
README
这是一个具有PSR接口的http服务器和客户端包,因此它可以与使用PSR接口的框架一起使用。它使用FiberLoop构建,而FiberLoop是基于PHP fibers的协程。
安装
您可以通过Composer安装此包
composer install bronsted\psr-http
用法
服务器用法
<?php require __DIR__ . '/vendor/autoload.php'; use bronsted\HttpServer; use Nyholm\Psr7\Factory\Psr17Factory; use Psr\Http\Message\ServerRequestInterface; $factory = new Psr17Factory(); $server = new HttpServer('0.0.0.0', 8000, $factory, $factory, $factory, $factory, $factory); $server->run(function (ServerRequestInterface $request) use ($factory) { $response = $factory->createResponse(); $path = $request->getUri()->getPath(); if ($path == '/') { $params = $request->getQueryParams(); $response->getBody()->write('Hello ' . (empty($params) ? 'world' : $params['name'])); } else { $response = $response->withStatus(404); } return $response; });
独立客户端用法上下文
<?php require __DIR__ . '/vendor/autoload.php'; use bronsted\HttpClient; use bronsted\FiberLoop; use Nyholm\Psr7\Factory\Psr17Factory; FiberLoop::instance()->defer(function() use($argv) { $factory = new Psr17Factory(); $request = $factory->createRequest('GET', $argv[1]); $client = new HttpClient($factory); $response = $client->sendRequest($request); echo $response->getStatusCode() . PHP_EOL; echo $response->getBody()->getContents() . PHP_EOL; }); FiberLoop::instance()->run();
错误和改进
在GitHub问题中报告错误或请随意提交拉取请求 :-)
许可证
MIT