initphp/http

2.1 2023-08-26 14:43 UTC

This package is auto-updated.

Last update: 2024-09-26 17:05:45 UTC


README

此库遵循 PSR-7 和 PSR-17 标准,提供 HTTP 消息和 HTTP 工厂解决方案。它还包含一个适用于 PSR-7 的 Emitter 类。

Latest Stable Version Total Downloads Latest Unstable Version License PHP Version Require

要求

  • PHP 7.4 或更高版本
  • PSR-7 HTTP 消息接口
  • PSR-17 HTTP 工厂接口
  • PSR-18 HTTP 客户端接口

安装

composer require initphp/http

使用方法

它遵循 PSR-7、PSR-17、PSR-18 标准,并在很大程度上严格实现了这些接口。

PSR-7 Emitter 使用方法

use \InitPHP\HTTP\Message\{Response, Stream};
use \InitPHP\HTTP\Emitter\Emitter;


$response = new Response(200, [], new Stream('Hello World', null), '1.1');

$emitter = new Emitter();
$emitter->emit($response);

use \InitPHP\HTTP\Facade\Factory;
use \InitPHP\HTTP\Facade\Emitter;

$response = Factory::createResponse(200);
$response->getBody()->write('Hello World');

Emitter::emit($response);

PSR-17 工厂使用方法

use \InitPHP\HTTP\Factory\Factory;

$httpFactory = new Factory();

/** @var \Psr\Http\Message\RequestInterface $request */
$request = $httpFactory->createRequest('GET', 'http://example.com');

// ...

use InitPHP\HTTP\Facade\Factory;

/** @var \Psr\Http\Message\RequestInterface $request */
$request = Factory::createRequest('GET', 'http://example.com');

PSR-18 客户端使用方法

use \InitPHP\HTTP\Message\Request;
use \InitPHP\HTTP\Client\Client;

$request = new Request('GET', 'http://example.com');

$client = new Client();

/** @var \Psr\Http\Message\ResponseInterface $response */
$response = $client->sendRequest($request);

use \InitPHP\HTTP\Facade\Factory;
use \InitPHP\HTTP\Facade\Client;

$request = Factory::createRequest('GET', 'http://example.com');

/** @var \Psr\Http\Message\ResponseInterface $response */
$response = Client::sendRequest($request);

PSR-7 流的小差异

如果您正在处理少量内容;PSR-7 流接口可能对您来说有些繁琐。这是因为 PSR-7 流接口会将内容写入 "php://temp" 或 "php://memory"。默认情况下,此库也将用您的内 容覆盖 "php://temp"。要更改此行为,必须在创建 Stream 对象时将其声明为构造函数的第二个参数。

use \InitPHP\HTTP\Stream;

/**
 * This content is kept in memory as a variable.
 */
$variableStream = new Stream('String Content', null);

/**
 * Content; "php://memory" is overwritten.
 */
$memoryStream = new Stream('Content', 'php://memory');

/**
 * Content; "php://temp" is overwritten.
 */
$tempStream = new Stream('Content', 'php://temp');
// or new Stream('Content');

致谢

许可

版权所有 © 2022 MIT 许可证