ghiyam / apix
Yii2 module supporting universal client-server requests to the external API
Installs: 288
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 1
Forks: 1
Type:yii2-extension
Requires
- php: >=7.2.0
- php-smpp/php-smpp: ^1.2
Requires (Dev)
- yiisoft/yii2: 2.0.17
README
Универсальный плагин динамических клиент-серверных запросов к API внешних сервисов в приложениях Yii2 framework.
Как это работает?
Плагин APIx
является модулем и отвечает при
обработке запросов за конфигурацию сервисов API и соответствующий роутинг. Каждый сервис
представлен контроллером и
его действия определяют запросы к API
этого сервиса. Плагин содержит объекты интегрированных клиентов для cURL/SOAP/SMPP соединений с API, которые
предполагается наследовать в конкретных реализациях.
Конфигурация сервисов
Каждый из сервисов API представляется соответствующим контроллером, поэтому все используемые сервисы конфигурируются в
параметре controllerMap
модуля плагина. Действие контроллера должно возвращать массив параметров запроса/запросов в
формате указанном ниже.
Note: Для корректной работы контроллера сервиса 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 ...
]
]