hiddeco/laravel-http-adapter

通过最流行的HTTP客户端通过Laravel发送HTTP请求。基于Ivory HTTP Adapter构建。

v0.1 2015-07-31 21:09 UTC

This package is not auto-updated.

Last update: 2024-09-11 23:56:54 UTC


README

Build Status Scrutinizer Code Quality MIT license StyleCI SensioLabsInsight

Laravel HTTP Adapter已正式弃用。请使用基于httplugphphttp/laravel代替。

Laravel HTTP Adapter是一个Ivory HTTP Adapter桥接器,它通过一个API集成了使用多个适配器及其配置的能力。

安装

为了使用此包而不会遇到问题,您需要PHP 5.5+或HHVM 3.6+以及Composer。

  1. 获取Laravel HTTP Adapter的最新版本,将以下行添加到您的composer.json文件中 "hiddeco/laravel-http-adapter": "0.1"

    此包支持以下适配器,您需要安装您想要使用的适配器。

    • "ext-curl": "*"
    • "ext-http": "*"
    • "guzzle/guzzle": "^3.9.4@dev"
    • "guzzlehttp/guzzle": "^4.1.4|^5.0"
    • "kriswallsmith/buzz": "^0.13"
    • "nategood/httpful": "^0.2.17"
    • "zendframework/zendframework1": "^1.12.9"
    • "zendframework/zend-http": "^2.3.4"
  2. 运行 composer updatecomposer install

  3. config/app.php 中注册Laravel HTTP Adapter服务提供者,将 'HiddeCo\HttpAdapter\HttpAdapterServiceProvider' 添加到 providers 键

  4. HttpAdapter 门面添加到 aliases 键:'HttpAdapter' => 'HiddeCo\HttpAdapter\Facades\HttpAdapter'

配置

要管理您的HTTP适配器,请运行 php artisan vendor:publish 命令,这将创建一个 config/httpadapter.php 文件,您可以在其中修改和管理适配器连接。

以下配置选项可用

全局配置

全局配置(global)覆盖了为您的HTTP适配器设置的其它所有配置。它接受与HTTP适配器连接相同的参数。

默认连接名称

在此处设置的适配器连接名称(default)是用于所有请求的默认连接。但是,您可以使用管理类使用尽可能多的连接。默认设置为 'main'

HTTP适配器连接

这是配置您的HTTP适配器连接(connections)的地方。已存在一个默认配置,其中包含可能的选项,并且没有连接数量的限制。

以下适配器可用:buzzcakecurlfile_get_contentsfopenguzzleguzzle_httphttpfulreactsocketzend1zend2

用法

HTTP适配器管理器

HttpAdapterManager 是发生魔法的地方。它绑定到 ioc 容器中的 httpadapter,并通过使用 Facade\HttpAdapter 门面可访问。它使用 Laravel Manager 包的一部分来管理HTTP适配器连接。有关Manager的更多信息,您应该查看相应的文档

需要注意的是,返回的连接将始终是 \Ivory\HttpAdapter\HttpAdapterInterface 的实例。您可以在 Ivory HTTP Adapter 文档 中找到有关该实例及其方法更多信息。

HTTP 适配器外观

HTTP 适配器外观会将静态方法调用传递到 IoC 容器中的 httpadapter 对象,正如之前所述,这是 HttpAdapterManager 类。

示例

此包的使用相当简单。主连接已预先配置并使用 file_get_contents HTTP 适配器,默认情况下不会为此连接设置其他配置选项。

使用外观

use HiddeCo\HttpAdapter\Facades\HttpAdapter;

$request = HttpAdapter::get('http://awesome.com');
$body = $request->getBody();
// and you're done

使用 HTTP 适配器管理器

HTTPAdapterManager 返回一个 \Ivory\HttpAdapter\HttpAdapterInterface 实例,并会像它那样表现。如果您想调用特定的连接,可以使用 connection 方法。

use HiddeCo\HttpAdapter\Facades\HttpAdapter;

$request = HttpAdapter::connection('alternative')->get('http://awesome.com');

更改默认连接及进一步说明

use HiddeCo\HttpAdapter\Facades\HttpAdapter;

HttpAdapter::connection('main')->get('http://awesome.com');
HttpAdapter::get('http://awesome.com');
HttpAdapter::connection()->get('http://awesome.com');
// are all the same because 

HttpAdapter::getDefaultConnection();
// returns 'main' as set in the configuration file

HttpAdapter::setDefaultConnection('alternative');
// the 'alternative' connection is now the default connection

依赖注入

您更喜欢使用依赖注入而不是外观?您可以轻松地注入管理器。

use HiddeCo\HttpAdapter\HttpAdapterManager;

class Foo
{
	protected $httpadapter;
	
	public function __construct(HttpAdapterManager $httpadapter)
	{
		$this->httpadapter;
	}
	
	public function bar()
	{
		$this->httpadapter->get('http://awesome.com');
	}
}

事件

如果您将通用或本地 HTTP 适配器配置中的 eventable 键设置为 true,则将使用 \Ivory\HttpAdapter\EventDispatcherHttpAdapter 来创建您的 HTTP 适配器连接。这样,您就可以监听使用 Laravel 分派器分派的事件。所有可用的事件都可以在 Ivory HTTP 文档 中找到。

use Ivory\HttpAdapter\Event\Events;
use Ivory\HttpAdapter\Event\PostSendEvent;

Event::listen(Events::POST_SEND, function (PostSendEvent $event) {
	Log::info("A request was made");
});

您还可以使用 EventServiceProvider 来注册事件监听器。

许可证

Laravel HTTP 适配器采用 MIT 许可证 (MIT)。