hedii/zotero-api

zotero 网络API的php包装器。

1.1.0 2016-09-28 08:11 UTC

This package is auto-updated.

Last update: 2024-09-18 19:28:47 UTC


README

Build Status

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文件。