pulkitjalan/requester

此包已被弃用,不再维护。未建议替代包。

封装 guzzle 和重试订阅者的 Requester 类

1.1.0 2015-02-26 22:17 UTC

This package is auto-updated.

Last update: 2019-09-06 07:06:21 UTC


README

简单封装 guzzle 和重试订阅者的 Requester 类

Build Status Scrutinizer Code Quality Coverage Status License Latest Version Total Downloads

此包需要 PHP >=5.4

安装

通过 composer 安装 - 编辑你的 composer.json 以需要此包。

"require": {
    "pulkitjalan/requester": "2.*"
}

然后在终端运行 composer update 以拉取它。

Laravel 5

有一个 Laravel 5 服务提供者和外观可用。

将以下内容添加到你的 config/app.php 中的 providers 数组

'PulkitJalan\Requester\RequesterServiceProvider'

接下来将以下内容添加到你的 config/app.php 中的 aliases 数组

'Requester' => 'PulkitJalan\Requester\Facades\Requester'

然后运行 php artisan vendor:publish --provider="pulkitjalan\requester\RequesterServiceProvider" --tag="config" 以发布配置文件。

寻找 Laravel 4 兼容版本?

查看 1.0 分支

使用方法

Requester 类有一个 guzzle 依赖,并且接受一个 guzzle 实例作为第一个参数。

此包还使用了一些 guzzle 订阅者。使用 https://github.com/guzzle/retry-subscriber 进行重试功能和 https://github.com/guzzle/log-subscriber 进行日志记录。

可用的请求方法:getheaddeleteputpatchpostoptions

<?php

use PulkitJalan\Requester\Requester;
use GuzzleHttp\Client as GuzzleClient;

$requester = new Requester(new GuzzleClient());

// simple get request
$requester->url('example.com')->get();

修改默认的重试行为。有关更多信息,请参阅 retry-subscriber

// retry 10 times, with a 1 second wait on a 503 error
$requester->url('example.com')->retry(10)->every(1000)->on([503])->get();

// disabling retry
$requester->url('example.com')->retry(false)->get();

禁用 ssl 检查

// ssl check disabled
$requester->url('example.com')->verify(false)->get();

使用 http 而不是 https

// disable https and use http
$requester->url('example.com')->secure(false)->get();

// use http
$requester->url('http://example.com')->get();

创建一个 POST 请求

// Create a post request
$requester->url('example.com/update/1')->post([
    'body' => [
        'title' => 'some title'
    ]
]);

// Upload a file
$requester->url('example.com/upload')->addFile('/tmp/image.jpg')->post([
    'body' => [
        'title' => 'Some image',
        'description' => 'Some image description'
    ]
]);

Guzzle 5 使用 RingPHP,并增加了执行异步请求的功能。

执行异步请求

// Create a post request
$response = $requester->url('example.com')->async(true)->get();

// Use the response asynchronously
$this->response = $response->then(function ($response) {
    return $response->getBody();
});

// Use the response synchronously
$this->response = $response->getBody();

将 guzzle 请求记录到文件。有关更多信息,请参阅 log-subscriber

use PulkitJalan\Requester\Requester;
use GuzzleHttp\Client as GuzzleClient;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;

// create a log channel
$log = new Logger('name');
$log->pushHandler(new StreamHandler('/path/to/your.log', Logger::INFO));

$requester = new Requester(new GuzzleClient());
$requester->addLogger($log);

// request and response logged to file
$requester->url('example.com')->get();

// Use the second param to update the format
$requester = new Requester(new GuzzleClient());
$requester->addLogger($log, 'DEBUG');