hedii / zotero-api
zotero 网络API的php包装器。
Requires
- php: >=5.6
- guzzlehttp/guzzle: ^6.2
Requires (Dev)
- phpunit/phpunit: ^5.4
This package is auto-updated.
Last update: 2024-09-18 19:28:47 UTC
README
Zotero Api
zotero 网络API的php包装器。
目录
安装
通过 composer 安装
composer require hedii/zotero-api
使用
实例化
ZoteroApi 必须使用API密钥进行实例化。如果您在zotero.org上有账户,可以在此处生成zotero API密钥 这里。
<?php // require composer autoloader require '/path/to/vendor/autoload.php'; // instantiate $api = new Hedii\ZoteroApi\ZoteroApi('your_zotero_api_key_here');
用户和组库
除了key($apiKey)
方法外,每次调用zotero网络API都必须在用户或组库上进行。
这一点在此包中体现为,您必须在每次调用的开始始终调用user($userId)
或group($groupId)
方法。
$api->user($userId) // continue chaining methods... $api->group($groupId) // continue chaining methods...
条目
多个条目
要访问库中的所有条目,请调用items()
方法。
$api->user($userId) ->items() // continue chaining methods...
单个条目
要访问库中的特定条目,请使用条目键作为参数调用items($itemKey)
方法。
$api->user($userId) ->items($itemKey) // continue chaining methods...
顶级条目
要访问库中的顶级条目,请在调用items()
方法后立即调用top()
方法。
$api->user($userId) ->items() ->top() // continue chaining methods...
垃圾桶中的条目
要访问已放入垃圾桶的条目,请在调用items()
方法后立即调用trash()
方法。
$api->user($userId) ->items() ->trash() // continue chaining methods...
子条目
要访问条目的子条目,请在调用items($itemKey)
方法后立即调用children()
方法。
$api->user($userId) ->items($itemKey) ->children() // continue chaining methods...
条目标签
要访问与特定条目关联的所有标签,请在调用items($itemKey)
方法后立即调用tags()
方法。
$api->user($userId) ->items($itemKey) ->tags() // continue chaining methods...
集合
多个集合
要访问库中的所有集合,请调用collections()
方法。
$api->user($userId) ->collections() // continue chaining methods...
单个集合
要访问库中的特定集合,请使用集合键作为参数调用collections($collectionKey)
方法。
$api->user($userId) ->collections($collectionKey) // continue chaining methods...
集合中的条目
在调用特定集合后调用items()
方法,以访问集合中的所有条目。
$api->user($userId) ->collections($collectionKey) ->items() // continue chaining methods...
集合中的顶级条目
在调用特定集合中的条目后调用top()
方法,以访问集合中的顶级条目。
$api->user($userId) ->collections($collectionKey) ->items() ->top() // continue chaining methods...
集合标签
在调用collections($collectionKey)
方法后立即调用tags()
方法,以访问与特定集合关联的所有标签。
$api->user($userId) ->collections($collectionKey) ->tags() // continue chaining methods...
子集合
在调用特定集合后调用subCollection()
方法,以访问特定集合内的子集合。
$api->user($userId) ->collections($collectionKey) ->subCollections() // continue chaining methods...
版本
在调用items()
或collections()
方法后调用versions()
方法,以获取所有资源(集合或条目)的版本。
$api->user($userId) ->items() ->versions() // continue chaining methods...
标签
所有标签
要访问库中的所有标签,请调用tags()
方法。
$api->user($userId) ->tags() // continue chaining methods...
匹配标签
要访问库中特定名称的标签,请使用字符串参数调用tags($tagName)
方法。
$api->user($userId) ->tags($tagName) // continue chaining methods...
搜索
多个搜索
要访问库中所有已保存的搜索,请调用searches()
方法。
$api->user($userId) ->searches() // continue chaining methods...
单个搜索
要访问库中的特定已保存搜索,请使用搜索键作为参数调用searches($searchKey)
方法。
$api->user($userId) ->searches($searchKey) // continue chaining methods...
键
要访问给定API密钥的权限信息,请在ZoteroApi
实例上调用key($apiKey)
方法。
$response = $api->key($apiKey) ->send(); $keyPrivileges = $response->getBody();
组
要访问当前API密钥可以访问的所有组,请在调用user($userId)
方法后立即调用groups()
方法。
$response = $api->user($userId) ->groups() ->send() $groups = $response->getBody();
排序和分页
排序和分页方法可以在调用资源方法之后调用。
排序
sortBy($value)
方法设置响应将根据哪种类型的值进行排序。
$value
参数必须是以下之一:
- dateAdded
- dateModified
- title
- creator
- type
- date
- publisher
- publicationTitle
- journalAbbreviation
- language
- accessDate
- libraryCatalog
- callNumber
- rights
- addedBy
- numItems
$api->user($userId) ->items() ->sortBy('publicationTitle') // continue chaining methods...
方向
direction($value)
方法设置由sortBy($value)
方法指定的字段的排序方向。
$value
参数必须是以下之一:
- asc
- desc
$api->user($userId) ->items() ->sortBy('language') ->direction('desc') // continue chaining methods...
限制
limit($value)
方法设置单个请求返回的最大结果数量。
$value
参数必须是介于1到100之间的整数。Zotero Web API提供的默认结果数量为50。
$api->user($userId) ->items() ->limit(70) // continue chaining methods...
开始
start($value)
方法确定第一个结果的索引。
$value
参数必须是整数。默认起始索引为0。
结合limit参数以选择可用的结果的一部分。
$api->user($userId) ->items() ->start(60) ->limit(70) // continue chaining methods...
请求超时
可以使用setTimeout($timeout)
方法设置请求超时时间,其中$timeout
是毫秒为参数的整数。
默认请求超时为0。
$api->setTimeout(3000) // continue chaining methods...
您可以使用getTimeout()
方法获取当前请求超时值。
$timeout = $api->getTimeout();
连接超时
可以使用setConnectionTimeout($connectionTimeout)
方法设置连接超时时间,其中$connectionTimeout
是毫秒为参数的整数。
默认连接超时为0。
$api->setConnectionTimeout(3000) // continue chaining methods...
您可以使用getConnectionTimeout()
方法获取当前连接超时值。
$connectionTimeout = $api->getConnectionTimeout();
发送请求并获取响应
发送请求
要在链式调用可用方法后发送请求,请调用send()
方法。
$response = $api->user($userId) ->items() ->send();
响应体
要作为数组访问响应体,请在响应上调用getBody()
方法。
$response = $api->user($userId) ->items() ->send(); $body = $response->getBody(); // array
响应JSON
要作为JSON字符串访问响应体,请在响应上调用getJson()
方法。
$response = $api->user($userId) ->items() ->send(); $json = $response->getJson(); // string
响应头
要作为数组访问响应头,请在响应上调用getHeaders()
方法。
$response = $api->user($userId) ->items() ->send(); $headers = $response->getHeaders(); // array
响应状态码
要访问响应状态码,请在响应上调用getStatusCode()
方法。
$response = $api->user($userId) ->items() ->send(); $statusCode = $response->getStatusCode(); // int
响应原因短语
要访问响应原因短语,请在响应上调用getReasonPhrase()
方法。
$response = $api->user($userId) ->items() ->send(); $reasonPhrase = $response->getReasonPhrase(); // string
原始查询
要自己构建请求URL,请调用raw($url)
方法,其中$url
是字符串作为参数。
$response = $api->raw('https://api.zotero.org/users/12345/items?limit=30&start=10') ->send(); $items = $response->getBody();
示例
<?php // require composer autoloader require __DIR__ . '/vendor/autoload.php'; use Hedii\ZoteroApi\ZoteroApi; // instantiate zotero api $api = new ZoteroApi('xxxxxxxxxxxxxxxxxxx'); // get the item 'ABCDEF' in the user 12345 library $response = $api->user(12345) ->items('ABCDEF') ->send(); $item = $response->getBody(); // get 12 first top items in the group 12345 library and // sort them by descendant modification date. $response = $api->group(12345) ->items() ->top() ->limit(12) ->sortBy('dateModified') ->direction('desc') ->send(); $items = $response->getBody(); // search for tags matching 'a name' in the user 12345 library $response = $api->user(12345) ->tags('a name') ->send(); $tags = $response->getBody(); // get all user 12345 collections $response = $api->user(12345) ->collections() ->send(); $collections = $response->getBody(); // get top items within the collection 'ABCDEF' in the group 98765 library $response = $api->group(98765) ->collections('ABCDEF') ->items() ->top() ->send(); $topItems = $response->getBody(); // get an array of all items keys with their versions $response = $api->user(12345) ->items() ->versions(); $itemKeysWithVersions = $response->getBody();
测试
composer test
许可证
hedii/zotero-api在MIT许可证下发布。有关详细信息,请参阅捆绑的LICENSE文件。