bajzany / api-client
此包的最新版本(v1.0.6)没有可用的许可证信息。
Nette 框架的 API 客户端
v1.0.6
2020-01-09 10:15 UTC
Requires
- php: ^7.2
- jms/serializer: ^3.2
- nette/application: ^2.4
- nette/di: ^2.4
README
安装
- Composer 安装
composer require bajzany/api-client dev-master
- 注册到 Nette 应用程序
extensions: ApiClientExtension: Bajzany\ApiClient\DI\ApiClientExtension ApiClientExtension: verify: TRUE stream: TRUE connect_timeout: 20 read_timeout: 20 timeout: 20
- verify = 启用验证证书
- connect_timeout = 描述等待连接到服务器秒数的浮点数。使用 0 表示无限期等待(默认行为)。
- timeout = 如果服务器不返回响应,则超时
- read_timeout = 该超时适用于流式主体的单个读取操作(当启用流选项时)。
如何使用
-
首先创建一个扩展
Bajzany\ApiClient\Model\EndPoint
的 api 请求操作类,例如Bajzany\ApiClient\Example\UpdateUserApi
<?php namespace Bajzany\ApiClient\Example; use Bajzany\ApiClient\Model\EndPoint; use Bajzany\ApiClient\Provider; use Bajzany\ApiClient\Response; class UpdateUserApi extends EndPoint { const METHOD = Provider::METHOD_POST; /** * @var int */ private $userId; /** * @var array */ private $data; public function __construct(int $userId, array $data) { $this->userId = $userId; $this->data = $data; } /** * @return string */ public function getUrl(): string { return "http://crm.d/test/user-update/{$this->userId}"; } /** * @param Provider $provider * @return mixed * @internal */ public function processRawRequest(Provider $provider): array { return $this->data; } /** * @param Provider $provider * @return Response|mixed * @throws \GuzzleHttp\Exception\GuzzleException */ public function execute(Provider $provider) { return parent::execute($provider); } }
- const METHOD 设置请求方法等 ('POST', 'GET', 'PUT', 'DELETE')
- function getUrl 设置请求 URL
- function processRawRequest 将请求数据传递到请求体
- function execute 可以替换自己的执行事件
-
为了运行此操作,必须注入服务
Bajzany\ApiClient\Provider
/** @var Provider @inject */ public $provider;
-
现在您可以像这样运行此操作
$updateUserApi = new UpdateUserApi($userId, [$myData]); $response = $updateUserApi->execute($this->provider);
-
在提供者中可以放置请求事件,并且已创建响应
$this->provider->onRequest[] = function (Provider $provider, EndPoint $endPoint, $response) { ..... }; $this->provider->onResponse[] = function (Provider $provider, EndPoint $endPoint, $response) { ..... };