subtlephp/middlewares

挂钩到 guzzle 并执行你想要的操作

0.0.2 2017-07-15 14:15 UTC

This package is not auto-updated.

Last update: 2024-09-15 03:24:05 UTC


README

1. 当 guzzle 响应不正常时,决定是否重试

没有100%可用性的服务。因此,我们必须决定在出现失败时何时重试。

Guzzle 是 PHP 用户的一个优秀的 HTTP 客户端,它提供了一个灵活的机制来自定义你的请求。在决定何时重试时,只需告诉 guzzle 是否根据响应和失败请求后何时重试。

2. 记录请求和响应(仅当它们的正文可读时)

3. 使用 '{}' 标记一次性定义你的 base_uri 和模式,UriReplacer 将完成其余操作。

安装

composer require subtlephp/middlewares

先决条件

Logger 中间件依赖于 2 个常量,REQUEST_IDLOG_DIR,但它们不是必需的。《REQUEST_LOG》默认等于 '',《LOG_DIR》默认等于 __DIR__

用法

<?php

use GuzzleHttp\HandlerStack;
use GuzzleHttp\Middleware;
use SubtlePHP\Middlewares\Guzzle\Retry;
use SubtlePHP\Middlewares\Guzzle\UriReplacer;
use SubtlePHP\Middlewares\Guzzle\Logger;
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;

$handlerStack = new HandlerStack();
$maxRetryTimes = 2;
$delay = 100;

$retryMiddleware = Middleware::retry(Retry::decider($maxRetryTimes), Retry::delay($delay));
$middlewares = [
    new UriReplacer(),
    new Logger(),
    $retryMiddleware,
];
$handlerStack->push($retryMiddleware);
$base_uri = 'http://gank.io';
$pattern = '/api/data/Android/{per_page}/{page}';
$client = new Client(['base_uri' => $base_uri, 'handler' => $handlerStack, [
    'attributes' => [
        'page' => 1,
        'per_page' => 10,
    ],
]]);
$request = new Request('GET', $pattern);
$response = $client->send($request);