thomas-squall / php-easy-api
PHP API 系统用于客户端和服务器开发。
0.6.2
2019-01-25 18:51 UTC
Requires
- curl/curl: ^2.2
- thomas-squall/php-magic-annotations: ^0.9.6
Requires (Dev)
- phpunit/phpunit: 5.*
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);
让我们分析
- 我们实例化了 Mailchimp 对象。
- 我们填充了调用所需的值。
- 我们实例化了 \PHPEasyAPI\Resolver 对象。
- 我们调用解析器的
makeRequest方法,传入 Mailchimp 对象(它是一个 API 客户端,按照注释)以及包含端点注释的字段名称。 - 我们打印了包含端点注释的字段值。
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"); } }
并且我们想在 user 的 getList 方法中监听传入的调用。为此,我们需要将监听器绑定到该端点,如下所示
$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
让我们分析
- 我们创建了一个
Listener类。 - 我们用
\PHPEasyAPI\Server注释标注了该类。 - 我们创建了一个处理调用并使用
\PHPEasyAPI\Enrichment\Endpoint注释的方法。 - 在端点注释中,我们传入了想要处理的方法(本例中为
GET)和 URL 结构(请注意,:userId和:listId是占位符,它们将被相应的 URL 部分替换,并按顺序传递给函数作为参数)。 - 我们将
'user'端点绑定到Listener的一个实例。 - 我们解析了请求的 URL。