一些尼阿托科/简单-HTTP客户端

PSR-7、PSR-17和PSR-18的简单门面

v0.1.0 2019-09-03 11:50 UTC

This package is auto-updated.

Last update: 2024-09-29 05:09:05 UTC


README

编写与实现无关的代码是一种良好的实践,尤其是在可插拔库中——它们不应需要使用某些具体的HTTP客户端,例如。这就是为什么诞生了PSR-18——一个标准的HTTP客户端接口。

然而,直接在项目中使用PSR-18 HTTP客户端接口(以及随后PSR-7请求和PSR-17请求工厂)可能会很繁琐,尤其是如果你不需要它提供的那么多的灵活性。

这个小库解决了这个难题:它包含一个类,SimpleHttpClient,它本身不实现PSR-18。然而,它可以接受任何PSR-18客户端和PSR-17工厂,并返回PSR-7响应。这样,你不需要手动创建PSR-7请求,同时你仍然可以选择任何PSR-18 HTTP客户端。

使用方法

composer require someniatko/simple-http-client
<?php

use Psr\Http\Client\ClientInterface;
use Psr\Http\Message\RequestFactoryInterface;
use Psr\Http\Message\StreamFactoryInterface;
use Someniatko\SimpleHttpClient\SimpleHttpClientInterface;
use Someniatko\SimpleHttpClient\SimpleHttpClient;

function doSomething(SimpleHttpClientInterface $httpClient): void 
{
    $httpClient->sendRequest(
        'POST', // HTTP method
        'http://example.com/api/user', // URI
        [ 'Authorization' => 'basic dXNlcjpwYXNzd29yZA==' ], // headers
        '{"name":"foo","permissions":"rwx"}' // body
    );
}

/** @var ClientInterface $psr18Client */
/** @var RequestFactoryInterface $psr17RequestFactory */
/** @var StreamFactoryInterface $psr17StreamFactory */

$client = new SimpleHttpClient(
    $psr18Client,
    $psr17RequestFactory,
    $psr17StreamFactory
);

doSomething($client);

测试

在项目根目录下运行

./vendor/bin/phpunit