understeam / yii2-httpclient
Yii2 http client implementation based on Guzzle library
Installs: 55 144
Dependents: 3
Suggesters: 0
Security: 0
Stars: 17
Watchers: 4
Forks: 6
Type:extension
Requires
- php: >=5.4.0
- guzzlehttp/guzzle: ~6.1
- yiisoft/yii2: >=2.0.0
Requires (Dev)
- codeception/codeception: ~2.1
- codeception/specify: ~0.4
- codeception/verify: ~0.3
This package is not auto-updated.
Last update: 2024-12-18 17:00:08 UTC
README
Installation
Recommended way to install this extenstion is through Composer:
php composer.phar require understeam/yii2-httpclient:~1.0 --prefer-dist
Configuration
Add this lines to your config file:
... 'components' => [ 'httpclient' => [ 'class' =>'understeam\httpclient\Client', 'detectMimeType' => true, // automatically transform request to data according to response Content-Type header 'requestOptions' => [ // see guzzle request options documentation ], 'requestHeaders' => [ // specify global request headers (can be overrided with $options on making request) ], ], ], ...
Basic usage
Performing HTTP GET request with mime type detection:
// Result is html text $text = Yii::$app->httpclient->get('http://httpbin.org/html'); // Result is SimpleXMLElement containing parsed XML $xml = Yii::$app->httpclient->get('http://httpbin.org/xml'); // Result is parsed JSON array $json = Yii::$app->httpclient->get('http://httpbin.org/get');
You can disable this behavior by specifying $detectMimeType
option to whole component or single call
// Result is Guzzle `Response` object $text = Yii::$app->httpclient->get('http://httpbin.org/xml', [], false);
Make request with custom options:
$text = Yii::$app->httpclient->get('http://httpbin.org/xml', [ 'proxy' => 'tcp://localhost:8125' ]);
Read more about this options in Guzzle 6 documentation
HTTP methods
You can make request with several ways:
- Call shortcut method (
get()
,post()
,put()
,delete()
, etc.) - Call
request()
method
All shortcut methods has the same signature except get()
:
// Synchronous GET request Yii::$app->httpclient->get( $url, // URL [], // Options true // Detect Mime Type? ); // Synchronous POST (and others) request Yii::$app->httpclient->post( $url, // URL $body, // Body [], // Options true // Detect Mime Type? ); // Asynchronous GET request Yii::$app->httpclient->getAsync( $url, // URL [] // Options ); // Asynchronous POST (and others) request Yii::$app->httpclient->postAsync( $url, // URL $body, // Body [] // Options );
NOTE: you still can make a GET request with body via
request()
function
Asynchronous calls
To make an asynchronous request simly add Async
to end of request method:
// PromiseInterface $promise = Yii::$app->httpclient->postAsync('http://httpbin.org/post');
NOTE: mime type detection is not supported for asynchronous calls
Read more about asynchronous requests in Guzzle 6 documentation
Request body
Types you can pass as a body of request:
- Arrayable object (ActiveRecord, Model etc.) - will be encoded into JSON object
- Array - will be sent as form request (x-form-urlencoded)
Any other data passed as body will be sent into Guzzle without any transformations.
Read more about request body in Guzzle documentation
Appendix
Feel free to send feature requests and fix bugs with Pull Requests