ghiyam / apix
支持对外部API进行通用客户端-服务器请求的Yii2模块
2.0.6
2024-02-08 08:43 UTC
Requires
- php: >=7.2.0
- php-smpp/php-smpp: ^1.2
Requires (Dev)
- yiisoft/yii2: 2.0.17
README
这是一个适用于Yii2框架的应用程序中的动态客户端-服务器请求到外部API的通用插件。
它是如何工作的?
APIx
插件是一个 模块,负责处理请求时的API服务配置和相应的路由。每个服务都由一个 控制器 表示,其 动作 定义了对该服务API的请求。插件包含用于cURL/SOAP/SMPP连接到API的集成客户端对象,这些对象将在具体实现中继承。
服务配置
每个API服务都由相应的控制器表示,因此所有使用的服务都在插件模块的 controllerMap
参数中配置。控制器动作应返回以下格式的请求/请求数组。
注意:为了正确工作,API服务的控制器需要从 [\ghiyam\apix\controllers\ServiceController] 继承。
[ // ... 'modules' => [ 'apix' => [ 'class' => 'ghiyam\apix\APIx', 'controllerMap' => [ // API service with REST client example 'some_vendor' => [ // default controller class is abstract, use inheritance instead 'class' => 'ghiyam\apix\controller\ServiceController', 'service' => [ 'client' => [ // default client class is abstract, use inheritance instead 'class' => '\ghiyam\apix\clients\CurlApiClient', 'credentials' => [], 'clientOptions' => [ 'host' => 'someHost', 'port' => 443, 'uri' => 'path/to/api/uri', 'timeout' => 3, ] ], ], ], // API service with SOAP client example 'another_vendor' => [ // default controller class is abstract, use implementation instead 'class' => 'ghiyam\apix\controller\ServiceController', 'service' => [ 'client' => [ // default client class is abstract, use inheritance instead 'class' => '\ghiyam\apix\clients\SoapApiClient', 'credentials' => [], 'namespaces' => [ 'header' => '', 'envelope' => '', ], 'clientOptions' => [ 'location' => '', 'uri' => '', 'trace' => true, 'compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP, 'exceptions' => false, 'soap_version' => SOAP_1_1, 'encoding' => 'UTF-8', ], ], ], ] // ... any other API clients implementations... ], ], ], //... ]
构建请求
每个请求都必须包含一个必填的 method
参数和一个可选的 params
参数。第一个包含对服务API调用的方法名称,第二个包含其参数。
请求构建示例
[
'method' => '<api_method_name>',
'params' =>
[
'<param_name>' => '<param_value>'
// ... API method params here ...
]
]