ArtaxComposer is a Zend Framework 2 service wrapper around the amphp/artax client
composer require pensiero/artax-composer
Add ArtaxComposer
as module in your application.config.php
You will now have access to the ArtaxComposer\Service\ArtaxService
service.
You can get it in your factory:
/** @var \ArtaxComposer\Service\ArtaxService $artaxService */
$artaxService = $serviceLocator->get('ArtaxComposer\Service\ArtaxService');
By default ArtaxComposer come with this configs
'artax_composer' => [
/*
* Cache could be:
* - null
* - an instance of Zend\Cache\Storage\Adapter\AbstractAdapter
* - a string rapresenting a service to search inside the serviceLocator
*/
'cache' => null,
/*
* If seeds are enabled, the system will write inside the specified seeds directory the result of each request
* Clear the seeds directory in order to have fresh results
*/
'seeds' => [
'enabled' => false,
'directory' => 'data/seeds/',
],
/*
* Default headers to add inside each request
*/
'default_headers' => [
'Accept' => 'application/json',
'Content-Type' => 'application/json; charset=utf-8',
],
/*
* Enable or not the newrelic extension
*/
'newrelic' => false,
],
You can ovveride them in your module.config.php
Each methods is chainable, except for the get()
, post()
, put()
and delete()
methods.
Set the URI of the request.
Set the params passed to the request. GET params should not be passed in the uri, but via this method.
Add an header.
Replace all headers via those passed.
Return headers along the response.
Set an header authorization token in the form key: Authorization
, value: Token token="AUTH_TOKEN"
.
Cache each request via the cache defined in module.config.php
(example below).
Reset all params passed before. Default headers will be restored if previously overwritten.
Instead of the response, return an array of all the configuration passed to the service.
The response will be an object.
The response will be an array.
The response will be a json string.
Perform a GET request and return
a response.
Perform a POST request and return
a response.
Perform a PUT request and return
a response.
Perform a DELETE request and return
a response.
$response = $this
->artaxService
->setUri('https://api.github.com/users/pensiero')
->setParams([
'bacon' => 'slurp',
])
->get();
In your module.config.php
'service_manager' => [
'factories' => [
'Application\Cache\Redis' => 'Application\Cache\RedisFactory',
],
],
'artax_composer' => [
'cache' => 'Application\Cache\Redis',
],
Create module/src/Application/Cache/RedisFactory.php
<?php
namespace Application\Cache;
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
use Zend\Cache\Storage\Adapter\RedisOptions;
use Zend\Cache\Storage\Adapter\Redis;
class RedisFactory implements FactoryInterface
{
public function createService(ServiceLocatorInterface $serviceLocator)
{
$redisOptions = new RedisOptions();
$redisOptions
->setServer('YOUR_HOST', 'YOUR_PORT');
return new Redis($redisOptions);
}
}
Call:
$response = $this
->artaxService
->setUri('https://api.github.com/users/pensiero')
->setParams([
'bacon' => 'slurp',
'eggs' => 'top',
])
->useCache()
->post();