pensiero/artax-composer

Artax库的包装器

v1.0.0 2017-04-13 18:20 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:26:18 UTC


README

ArtaxComposer 是一个围绕Zend Framework 2amphp/artax客户端的包装器服务

入门指南

composer require pensiero/artax-composer

application.config.php 中将 ArtaxComposer 添加为模块

用法

现在您将能够访问 ArtaxComposer\Service\ArtaxService 服务。

您可以在工厂中获取它

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

配置

默认情况下,ArtaxComposer 包含以下 配置

    '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,
    ],

您可以在您的 module.config.php 中覆盖它们

可用方法

除了 get()post()put()delete() 方法之外,每个方法都是可链式的。

setUri(string $uri)

设置请求的 URI。

setParams(array $params)

设置传递给请求的参数。GET 参数不应该在 URI 中传递,而应该通过此方法传递。

addHeader(string $name, string $value)

添加一个头部。

setHeaders(array $headers)

通过传递的头部替换所有头部。

withHeaders()

返回响应中的头部。

setAuthToken(string $authToken)

设置一个以键值形式存在的头部授权令牌,格式为 key: Authorization,value: Token token="AUTH_TOKEN"

useCache(int $ttl = null)

通过在 module.config.php 中定义的缓存缓存每个请求(示例见下文)。

reset()

重置之前传递的所有参数。如果之前已覆盖,则将恢复默认头部。

debug()

而不是返回响应,返回传递给服务器的所有配置的数组。

returnObject()

响应将是一个对象。

returnArray()

响应将是一个数组。

returnObject()

响应将是一个 JSON 字符串。

get()

执行 GET 请求并返回响应。

post()

执行 POST 请求并返回响应。

put()

执行 PUT 请求并返回响应。

delete()

执行 DELETE 请求并返回响应。

示例

带有参数的简单 GET 请求

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

带有参数和缓存的 POST 请求

在您的 module.config.php

    'service_manager' => [
        'factories'          => [
            'Application\Cache\Redis' => 'Application\Cache\RedisFactory',
        ],
    ],
    'artax_composer'  => [
        'cache' => 'Application\Cache\Redis',
    ],

创建 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);
    }
}

调用

$response = $this
    ->artaxService
    ->setUri('https://api.github.com/users/pensiero')
    ->setParams([
      'bacon' => 'slurp',
      'eggs'  => 'top',
    ])
    ->useCache()
    ->post();