bronsted/psr-http

v2.0 2023-08-21 12:47 UTC

This package is auto-updated.

Last update: 2024-09-21 14:57:15 UTC


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