项目作者: pensiero

项目描述 :
ZF2 service wrapper around amphp/artax client
高级语言: PHP
项目地址: git://github.com/pensiero/artax-composer.git
创建时间: 2016-05-16T11:06:38Z
项目社区:https://github.com/pensiero/artax-composer

开源协议:

下载


artax-composer

ArtaxComposer is a Zend Framework 2 service wrapper around the amphp/artax client

Getting Started

  1. composer require pensiero/artax-composer

Add ArtaxComposer as module in your application.config.php

Usage

You will now have access to the ArtaxComposer\Service\ArtaxService service.

You can get it in your factory:

  1. /** @var \ArtaxComposer\Service\ArtaxService $artaxService */
  2. $artaxService = $serviceLocator->get('ArtaxComposer\Service\ArtaxService');

Configs

By default ArtaxComposer come with this configs

  1. 'artax_composer' => [
  2. /*
  3. * Cache could be:
  4. * - null
  5. * - an instance of Zend\Cache\Storage\Adapter\AbstractAdapter
  6. * - a string rapresenting a service to search inside the serviceLocator
  7. */
  8. 'cache' => null,
  9. /*
  10. * If seeds are enabled, the system will write inside the specified seeds directory the result of each request
  11. * Clear the seeds directory in order to have fresh results
  12. */
  13. 'seeds' => [
  14. 'enabled' => false,
  15. 'directory' => 'data/seeds/',
  16. ],
  17. /*
  18. * Default headers to add inside each request
  19. */
  20. 'default_headers' => [
  21. 'Accept' => 'application/json',
  22. 'Content-Type' => 'application/json; charset=utf-8',
  23. ],
  24. /*
  25. * Enable or not the newrelic extension
  26. */
  27. 'newrelic' => false,
  28. ],

You can ovveride them in your module.config.php

Available methods

Each methods is chainable, except for the get(), post(), put() and delete() methods.

setUri(string $uri)

Set the URI of the request.

setParams(array $params)

Set the params passed to the request. GET params should not be passed in the uri, but via this method.

addHeader(string $name, string $value)

Add an header.

setHeaders(array $headers)

Replace all headers via those passed.

withHeaders()

Return headers along the response.

setAuthToken(string $authToken)

Set an header authorization token in the form key: Authorization, value: Token token="AUTH_TOKEN".

useCache(int $ttl = null)

Cache each request via the cache defined in module.config.php (example below).

reset()

Reset all params passed before. Default headers will be restored if previously overwritten.

debug()

Instead of the response, return an array of all the configuration passed to the service.

returnObject()

The response will be an object.

returnArray()

The response will be an array.

returnObject()

The response will be a json string.

get()

Perform a GET request and return a response.

post()

Perform a POST request and return a response.

put()

Perform a PUT request and return a response.

delete()

Perform a DELETE request and return a response.

Examples

Simple GET request with params

  1. $response = $this
  2. ->artaxService
  3. ->setUri('https://api.github.com/users/pensiero')
  4. ->setParams([
  5. 'bacon' => 'slurp',
  6. ])
  7. ->get();

POST request with params and cache

In your module.config.php

  1. 'service_manager' => [
  2. 'factories' => [
  3. 'Application\Cache\Redis' => 'Application\Cache\RedisFactory',
  4. ],
  5. ],
  6. 'artax_composer' => [
  7. 'cache' => 'Application\Cache\Redis',
  8. ],

Create module/src/Application/Cache/RedisFactory.php

  1. <?php
  2. namespace Application\Cache;
  3. use Zend\ServiceManager\FactoryInterface;
  4. use Zend\ServiceManager\ServiceLocatorInterface;
  5. use Zend\Cache\Storage\Adapter\RedisOptions;
  6. use Zend\Cache\Storage\Adapter\Redis;
  7. class RedisFactory implements FactoryInterface
  8. {
  9. public function createService(ServiceLocatorInterface $serviceLocator)
  10. {
  11. $redisOptions = new RedisOptions();
  12. $redisOptions
  13. ->setServer('YOUR_HOST', 'YOUR_PORT');
  14. return new Redis($redisOptions);
  15. }
  16. }

Call:

  1. $response = $this
  2. ->artaxService
  3. ->setUri('https://api.github.com/users/pensiero')
  4. ->setParams([
  5. 'bacon' => 'slurp',
  6. 'eggs' => 'top',
  7. ])
  8. ->useCache()
  9. ->post();