subtlephp / middlewares
挂钩到 guzzle 并执行你想要的操作
0.0.2
2017-07-15 14:15 UTC
Requires
- guzzlehttp/guzzle: ^6.0
- monolog/monolog: ^1.23
- psr/log: ^1.0
- subtlephp/ygritte: ^0.0
Requires (Dev)
- phpunit/phpunit: ^6.2
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_ID
和 LOG_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);