此包的最新版本(1.0.1)没有可用的许可证信息。

用于处理API的抽象类

1.0.1 2017-10-04 18:00 UTC

This package is not auto-updated.

Last update: 2024-09-18 22:26:01 UTC


README

需要PHP >= 5.5.0以及已连接的curl扩展。

为了使用,需要定义一个非抽象的派生类。

在派生类中,需要在$methods属性中描述API调用的方法,格式为

[
    //  Имя метода
    'method' => [
        // Url, переопределяющий url в общей конфигурации
        'url' => string,
        // Путь, прибавляемый к url
        'url_suffix' => string,
        // Код ответа при успехе
        'success_response_code' => int
        // Параметры метода
        'params' => [
            // Имя параметра
            'param' => [
                // Обязательный ли параметр. По умолчанию параметр не обязателен
                'required' => bool,
                // Значение по умолчанию, переопределяющее значение по умолчанию в общей конфигурации.
                // Рассматривается, если параметр является обязательным и не определен
                'default' => mixed
            ]
        ]
    ]
]

要调用API方法,需要使用静态调用className::method([array $params], [bool $checkResponseCode]),其中
className — 派生类的名称,
method — 派生类$methods属性中的方法名称,
$params — 调用方法参数数组(可选),
$checkResponseCode — 是否仅检查响应代码(可选,默认为false)。

可以在派生类中在className::$config属性中定义配置,格式为

[
    // Url для запросов к API
    'url' => string,
    // Код ответа при успехе
    'success_response_code' => int 
    // Значения параметров методов API по умолчанию
    'params_defaults' => array,
    // Общие параметры методов API
    'common_params' => array,
]

可以在派生类中定义一个selfInit():void方法,用于初始化时的自定义操作。

可以在派生类中定义一个curlParams():array方法,返回自定义的curl参数。

API调用通过POST方法进行,参数以JSON格式传递,传递相应的Content-Type头部。在https请求中设置curl参数

[
    CURLOPT_SSL_VERIFYPEER => 0,
    CURLOPT_SSL_VERIFYHOST => 0
]

可以在派生类中定义一个className::postProcess(ApiResult $result)方法,将查询结果传递给它。

API方法调用返回

  • ApiResult类的实例,包含以下字段

    • class — 上下文类,
    • error — 错误消息,
    • calledApiMethod — 调用的API方法,
    • requestUrl — 请求URL,
    • requestParams — 请求参数,
    • requestSuccess — 请求是否成功,
    • responseCode — 响应代码,
    • requestResult — 请求结果;
  • 或布尔值,表示响应代码是否与成功时定义的响应代码相匹配,如果调用方法时定义了$checkResponseCode参数;

  • className::postProcess()方法的返回结果。