lessmore92/api-consumer

比以往任何时候都更容易构建REST API消费者

v1.0.1 2020-02-13 12:20 UTC

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'