guym4c / airtable-client
PHP Airtable API客户端
Requires
- ext-json: *
- davedevelopment/stiphle: ^0.9.2
- doctrine/cache: ^1.8
- guzzlehttp/guzzle: ^7.0.1
- shrikeh/teapot: ^2.3
Requires (Dev)
- phpunit/phpunit: ^9.0.1
README
Airtable的现代PHP API客户端。
安装
通过Composer
composer require guym4c/airtable-client
使用方法
获取客户端的一个实例
$airtable = new \Guym4c\Airtable\Airtable(/* YOUR API KEY */, /* YOUR BASE ID */);
现在您可以访问您基础表中的表的CRUD(创建、读取、更新、删除)操作。
$airtable->get($table, $recordId); $airtable->create($table, $jsonArray); $airtable->update($record /* more on this below */); // you may pass an additional boolean as TRUE for a destructive update $airtable->delete($table, $recordId); // returns a boolean - whether deletion was successful
记录
客户端在获取、创建和更新操作后将为Record
提供实例。Record
公开了表、Airtable ID、JSON数据数组和从Airtable获取的时间的getter。
您还可以将记录中的字段作为Record
的属性访问
$myField = $record->field;
当您的Airtable字段名称包含空格时,您可以使用花括号语法 - $record->{'字段名称包含空格'};
。
与基础中其他表相关的字段将自动检测。如果您将字段作为属性访问,客户端不知道关系指向哪个表,并将返回一个Loader
,您可以将表名传递给它以解析关系。
$relatedRecord = $record->field->load('relatedTable');
您也可以直接调用$record->load($field, $table);
来直接获取相关的记录。
列出记录
您可以通过调用$airtable->list($table)
获取多个记录。您可以通过传递额外的Filter
参数来过滤这些结果 - 请参阅您基础表的API文档,了解Filter
的属性细节。
有两种过滤简写方法:search($table, $field, $value)
和find($table, $field, $value)
。search()
在$table
的$field
中执行Airtable搜索$value
,因此将返回子串匹配。find()
将只返回精确匹配。
由于list()
结果分页,list()
返回给您完成的Request
对象。然后您可以使用getRecords()
获取获取的Record
列表,或使用nextPage()
转到下一页。请注意,页面指针最终将在Airtable端重置。
批量作业
$airtable->createAll()
和$airtable->updateAll()
允许批量请求数据。您可以分别将这些方法和数组传递给这些方法,客户端将使用批量请求创建它们。
速率限制
Airtable API每秒限制为5个查询。如果您超过此限制,客户端将降低请求速度,阻止请求。如果Airtable端超过此限制并将您置于30秒的惩罚箱中,对API的调用将引发异常。
缓存
通常,您可能有一些数据较静止的表。为了防止它们影响您的速率限制,您可以为客户端构造函数提供一个实现Doctrine Cache接口,以及一个您认为'可缓存'的表数组。
$airtable = new \Guym4c\Airtable\Airtable($apiKey, $baseId, $cache, ['cachable_table_one', 'cachable_table_two']);
客户端将响应对未应用过滤或排序的请求的缓存请求,并尝试响应get()
、search()
和find()
。您可以通过调用客户端的flushCache()
方法来清除缓存。当客户端创建、修改或删除记录时,也会清除表的缓存。
可缓存表必须少于101条记录,因为客户端不会缓存Airtable分页的表。
高级
客户端构造函数公开了额外的参数,用于高级使用。
public function __construct( string $key, string $baseId, ?CacheProvider $cache = null, array $cachableTables = [], ?string $apiEndpoint = null, array $headers = [], bool $isRateLimited = true ) {
$key
(必需):API密钥$baseId
(必需):Airtable基础ID$cache
:Doctrine 缓存实例$cachableTables
:客户端缓存的表$apiEndpoint
:用作替代官方 Airtable API 端点的 API 端点。必须包含版本路径。$headers
:要附加到请求中的头信息关联数组$isRateLimited
:是否强制执行 Airtable 速率限制(默认true
)
如果您在多个应用程序中使用此客户端,当您的客户端同时尝试联系 Airtable 时,您可能会遇到速率限制。构造函数的最后三个参数提供给您,以便您可以通过中央节流代理请求到 Airtable。