thomas-squall/php-easy-api

PHP API 系统用于客户端和服务器开发。

0.6.2 2019-01-25 18:51 UTC

This package is auto-updated.

Last update: 2024-09-26 07:45:34 UTC


README

这是一个易于使用的库,它利用了PHP7 注释库

安装

使用 composer 非常简单,只需运行以下命令

$ composer require thomas-squall/php-easy-api

开始之前

请记住,为了工作,您应该确保调用每个端点时,也调用相应的解析器片段。我已经附上一个 htaccess 示例,这可能有助于。如果您有任何疑问,请在此处提交问题

用法示例

客户端

假设我们有一个以下类

<?php

/**
 * Class Mailchimp.
 * [\PHPEasyAPI\Client]
 */
class Mailchimp
{
    /**
     * [\PHPEasyAPI\Enrichment\Endpoint(method = "GET", url = "https://{$dataCenter}.api.mailchimp.com/3.0/lists/")]
     * [\PHPEasyAPI\Enrichment\User(username = "{$username}", password = "{$apiKey}")]
     */
    public $getLists;

    public $dataCenter;
    public $username;
    public $apiKey;
}

这是一个基本实现,用于调用 mailchimp 的 lists/ 端点。

PS:请注意,使用了特殊的字符串 {$dataCenter}{$username}{$password}。这些特殊字符串将与类对应的字段值进行评估。

现在,如果我们想要进行调用,我们只需要做以下操作

$mailchimp = new Mailchimp();
$mailchimp->dataCenter = '<YourDatacenter>';
$mailchimp->username = '<YourUsername>';
$mailchimp->apiKey = '<YourAPIKey>';

$resolver = new \PHPEasyAPI\Resolver();
$resolver->makeRequest($mailchimp, 'getLists');

print_r($mailchimp->getLists);

让我们分析

  1. 我们实例化了 Mailchimp 对象。
  2. 我们填充了调用所需的值。
  3. 我们实例化了 \PHPEasyAPI\Resolver 对象。
  4. 我们调用解析器的 makeRequest 方法,传入 Mailchimp 对象(它是一个 API 客户端,按照注释)以及包含端点注释的字段名称。
  5. 我们打印了包含端点注释的字段值。

PS:请注意,结果将被放入字段本身。

服务器

假设我们有一个以下类

<?php

/**
 * Class Listener.
 * [\PHPEasyAPI\Server("user")] // 'user' is the endpoint
 */
class Listener
{
    /**
     * @param \PHPEasyAPI\Request $request
     * @return string
     * [\PHPEasyAPI\Enrichment\Endpoint(method = "GET", url = ":userId/getList/:listId")]
     */
    public function getList($request)
    {
        $userId = $request["userId"];
        $listId = $request["listId"];
        $request->send200("List $listId of user $userId");
    }
}

并且我们想在 usergetList 方法中监听传入的调用。为此,我们需要将监听器绑定到该端点,如下所示

$resolver->setBaseUrl('https:///MyTest'); // Assuming this is your local test url.
$resolver->bindListener(new Listener()); // 'user' is the endpoint.

NB:基础 URL 是必需的,以便解析器理解请求 URL 的哪个部分不计入。不设置它将抛出异常,因为它是系统正常工作所必需的。

现在,剩下的工作就是解析传入的请求

$resolver->resolve(); // Example call: GET https:///MyTest/user/10/getList/15

让我们分析

  1. 我们创建了一个 Listener 类。
  2. 我们用 \PHPEasyAPI\Server 注释标注了该类。
  3. 我们创建了一个处理调用并使用 \PHPEasyAPI\Enrichment\Endpoint 注释的方法。
  4. 在端点注释中,我们传入了想要处理的方法(本例中为 GET)和 URL 结构(请注意,:userId:listId 是占位符,它们将被相应的 URL 部分替换,并按顺序传递给函数作为参数)。
  5. 我们将 'user' 端点绑定到 Listener 的一个实例。
  6. 我们解析了请求的 URL。