roemerb / php7-rest
PHP 7.0+ 的简单 REST 客户端
1.0
2017-06-14 09:08 UTC
Requires
- php: >=7.0
- ext-curl: *
Requires (Dev)
- phpunit/phpunit: ^5.5
This package is auto-updated.
Last update: 2024-09-16 20:14:19 UTC
README
php7-rest
php7-rest 是一个非常简单的 Http REST 客户端,针对 PHP v7.0+ 进行了一些优化。它并不一定旨在具有丰富的功能或广泛使用,而只是提供一个简单的 API 来指定 REST API 行为。
安装
如果您想安装此库,我建议使用 Composer
composer require roemeb/php7-rest
尽管如此,由于此库没有任何依赖项(仅需要 ext-curl
),您也可以克隆此存储库并开始使用 src/RestClient.php
。
用法
初始化
以如下方式初始化 API 客户端
require_once('vendor/autoload.php'); use RestClient\RestClient; $client = new RestClient(RestClient::HTTPS, 'api.myhost.com', ['version' => 2]);
您只需指定方案和主机。如果您需要使用任何类型的身份验证,您可以通过添加头信息来实现。目前,生成 OAuth 令牌不是此库的功能之一。
$token = Oauth::gen_token($credentials); $client->addHeader('Authorization', 'Bearer ' . $token);
选项
在初始化时可以指定一些选项
version
您的 API 版本。将作为路径附加到主机(例如,myhost.com/v2/
)port
您的 API 是否在非标准端口上运行?在这里指定它。cert
将被加载到以避免 curl 错误 60 的证书捆绑文件的路径content_type
自定义Content-Type
头的值。默认为application/json
。如果您根本不想使用此头,请将其设置为false
。user_agent
自定义User-Agent
头的值。默认为Php7Rest/{Version}
。如果您根本不想使用此头,请将其设置为false
。insecure
设置为 true 以禁用 curl 主机验证。
您还可以通过使用 $client->addHeader($name, $value)
来设置头选项。它将覆盖默认值。
资源
可以通过两种方式之一查询数据。您既可以注册资源,这些资源将被自动调用,也可以让您的现有资源类扩展此库中提供的 RestResource
类。
注册资源
注册资源非常简单。只需提供名称和此资源支持的方法数组。另外,如果您的资源支持非默认方法,您也可以注册这些方法。如果这些方法需要 ID,它将自动包含在请求中。
$client->register('people', ['list', 'get', 'create']); $client->registerMethod('people', [ 'name' => 'address', 'method' => '{id}/formatted_address', 'http_method' => RestClient::HTTP_GET // Or just 'GET'/'get'/'Get' ]); /** * This will call: * GET https://api.myhost.com/people/v2/{id} */ $client->people->get($id); // We can call custom methods the same way $client->people->address($id);
扩展 RestResource
class Person extends RestResource { public function __construct() { // Just give the parent constructor some information parent::__construct($restClient, strtolower(__CLASS__); } } $people = new Person(); $people->get($id);
闭包
所有方法都支持闭包,因此您不需要等待 API 响应即可继续您的业务逻辑。响应将作为参数包含在您的函数中。如下使用闭包
// Initiate an API call... $client->people->get($id, function($response) { // Do something with $response }); // ...and continue to do other stuff in the meantime.