sfn / httpclient
一个简单的PSR-7客户端
v0.1.1
2017-08-26 15:14 UTC
Requires
- php: ^7.0
- http-interop/http-factory: ^0.3.0
- psr/http-message: ~1.0
Suggests
This package is not auto-updated.
Last update: 2024-09-29 03:20:45 UTC
README
这是一个简单而小巧的PSR7客户端。它仍在开发中,但大致上可以工作。
目录
要求
- PHP 7.0或更高版本
php-curl
或allow_url_fopen
设置为true- 一个PSR7实现。
Sfn\HttpClient
需要一个PSR-7实现。目前支持Zend Diactoros、Guzzle和Slim。
当然,您可以为任何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身份验证
- 示例
- 更好的文档