sfn/httpclient

一个简单的PSR-7客户端

v0.1.1 2017-08-26 15:14 UTC

This package is not auto-updated.

Last update: 2024-09-29 03:20:45 UTC


README

Latest Version MIT license PHP

这是一个简单而小巧的PSR7客户端。它仍在开发中,但大致上可以工作。

目录

要求

  • PHP 7.0或更高版本
  • php-curlallow_url_fopen设置为true
  • 一个PSR7实现。

Sfn\HttpClient需要一个PSR-7实现。目前支持Zend DiactorosGuzzleSlim

当然,您可以为任何PSR-7实现编写自己的HTTP工厂实现。有关PSR-17 Http Factory接口的更多信息,请查看此处

安装

使用Composer安装。

composer require sfn/httpclient

Zend Diactoros支持

composer require http-interop/http-factory-diactoros

Guzzle支持

composer require http-interop/http-factory-guzzle

Slim支持

composer require http-interop/http-factory-slim

用法

创建客户端实例

使用ClientFactory::make()方法可以创建客户端的正确实例。如果它检测到curl已安装,则创建一个具有curl后端的客户端,否则创建一个通过php的file_get_contents发送请求的客户端。

ClientFactory::make()接受一个包含客户端配置的关联数组。您必须指定您的PSR-17 HTTP工厂实现。您可以在此处找到可以设置在配置数组中的参数的完整列表。

// Zend Diactoros
$config = [
    'requestfactory'  => new Http\Factory\Diactoros\RequestFactory,
    'responsefactory' => new Http\Factory\Diactoros\ResponseFactory,
    'urifactory'      => new Http\Factory\Diactoros\UriFactory,
];

// Guzzle
$config = [
    'requestfactory'  => new Http\Factory\Guzzle\RequestFactory,
    'responsefactory' => new Http\Factory\Guzzle\ResponseFactory,
    'urifactory'      => new Http\Factory\Guzzle\UriFactory,
];

// Slim
$config = [
    'requestfactory'  => new Http\Factory\Slim\RequestFactory,
    'responsefactory' => new Http\Factory\Slim\ResponseFactory,
    'urifactory'      => new Http\Factory\Slim\UriFactory,
];

$client = Sfn\HttpClient\ClientFactory::make($config);

发送请求

首先,您必须使用您偏好的Psr\Http\Message\RequestInterface实现创建一个请求。然后,简单地调用客户端的send()方法。

$request = (new Zend\Diactoros\Request())
    ->withUri(new Zend\Diactoros\Uri('http://api.example.com/path'))
    ->withMethod('GET')
    ->withAddedHeader('Content-Type', 'application/json');

$response = $client->send($request); // Return a ResponseInterface

REST API的辅助方法

存在get()post()put()delete()patch()辅助方法。您可以传递第二个参数,它是一个选项数组。您可以在此处找到请求参数的完整列表。

// GET request
$response = $client->get('http://api.example.com/path');

// POST request
$response = $client->post(
    'http://api.example.com/path',
    ['body' => http_build_query(['foo' => 'bar'])]
);

基本URI

您还可以在客户端配置中指定基本URI。

$config = [
    'requestfactory'  => new Http\Factory\Diactoros\RequestFactory,
    'responsefactory' => new Http\Factory\Diactoros\ResponseFactory,
    'urifactory'      => new Http\Factory\Diactoros\UriFactory,
    'baseuri'         => 'http://api.example.com'
];
$client = Sfn\HttpClient\ClientFactory::make($config);

// GET request
$response = $client->get('path'); // GET http://api.example.com/path

待办事项

  • 支持Cookies
  • SSL身份验证
  • 示例
  • 更好的文档

许可

MIT许可