lessmore92 / api-consumer
比以往任何时候都更容易构建REST API消费者
Requires
- php: >=7.3
Requires (Dev)
- phpunit/phpunit: ^9.1@dev
This package is auto-updated.
Last update: 2024-09-13 23:23:03 UTC
README
比以往任何时候都更容易构建REST API消费者(客户端)
安装
通过Composer轻松安装
composer require lessmore92/api-consumer
支持
PHP >=5.5
用法
轻松从ApiConsumer
扩展你的类并实现ConfigApi
方法,构建你惊人的API客户端。
示例
以下是最小要求,以开始构建API客户端:ConfigApi
use Lessmore92\ApiConsumer\ApiConsumer;
use Lessmore92\ApiConsumer\Builders\ApiBuilder;
class MyApi extends ApiConsumer
{
/**
* @return ApiBuilder
*/
protected function ConfigApi()
{
$api = new ApiBuilder();
$api->setHeaderApiKey('API-TOKEN','X-API-Key');
$api->setBaseUrl('https://MY-API-BASE-URL.COM/');
return $api;
}
}
如果需要将API密钥放在查询字符串中,请使用setQueryApiKey
而不是setHeaderApiKey
,例如$api->setQueryApiKey('API-TOKEN','TOKEN');
$this->Request()
的魔法
通过继承ApiConsumer
,你的类将能够利用支持链的$this->Request()
方法。使用$this->Request()
,你将能够访问所有特性和功能以进行请求。
定义你的第一个方法以从API接收数据: 简单的GET请求
要指定要调用的端点,必须使用->Endpoint()
方法。然后通过在末尾链式调用->Get()
方法,指定请求方法为GET
。
use Lessmore92\ApiConsumer\ApiConsumer;
use Lessmore92\ApiConsumer\Builders\ApiBuilder;
class MyApi extends ApiConsumer
{
/**
* @return ApiBuilder
*/
protected function ConfigApi()
{
$api = new ApiBuilder();
$api->setHeaderApiKey('API-TOKEN','X-API-Key');
$api->setBaseUrl('https://MY-API-BASE-URL.COM/');
return $api;
}
public function Users()
{
$users = $this->Request()
->Endpoint('users')
->Get()
;
return $users->body;
}
}
在上面的示例中,我们定义了一个方法来从服务器获取Users
列表。
通过调用Users()
方法,实际上我们是在获取https://MY-API-BASE-URL.COM/users
进行另一个请求:添加 查询字符串
要通过查询字符串传递数据(例如搜索、排序或过滤),可以使用->AddQueryString()
方法。
public function SearchUsers($search)
{
$users = $this->Request()
->Endpoint('users')
->AddQueryString('search', $search)
->Get()
;
return $users->json_body;
}
在上面的示例中,我们定义了一个方法来搜索用户。
通过调用SearchUsers('alex')
方法,实际上我们是在获取https://MY-API-BASE-URL.COM/users?search=alex
进行另一个请求:以 json 格式获取结果
要以json
格式接收数据,必须使用->AcceptJson()
方法。
public function SearchUsers($search)
{
$users = $this->Request()
->Endpoint('users')
->AcceptJson()
->Get()
;
return $users->json_body;
}
如上代码所示,通过在请求中链式调用->AcceptJson()
,我们告诉API服务器我们接受json
,然后在return
行中返回一个以json格式编写的搜索结果。
对于json
数据格式,你的API服务器必须能够提供以json格式编写的响应,并支持HEADER 'accept : application/json'