takuya/php-nulab-backlog-api-client

访问Nulab Backlog Api。

1.0.0 2023-03-01 10:45 UTC

This package is auto-updated.

Last update: 2024-09-09 08:36:36 UTC


README

目标:使Nulab的Backlog API易于访问,能够获取所有数据。

由于在Backlog的空间和项目内部查找数据很麻烦,因此可以全面查找数据。

基本用法。

<?php
use Takuya\BacklogApiClient\BacklogAPIClient;
$key = getenv('backlog_api_key');
$space = getenv('backlog_space');
$cli = new BacklogAPIClient($space, $key);
$cli->getSpace();
$cli->getIssue(['query_options'=>['projectIds'=>[1,2,3],'count'=>100]]);
$cli->getComment("PRJ-234",1)

spaceId 是URL。

$space='http://xxx-your-space.backlog.xxx'

提供的类

提供了两个类文件。

  • class BacklogAPIClient 更新和获取用
  • class Backlog 获取专用
<?php
// Apiで呼び出し
use Takuya\BacklogApiClient\BacklogAPIClient;
$cli = new BacklogAPIClient($space, $key);
$cli->getProject("PRJEKEY");
$cli->getIssue("PRJEKEY-123");
// オブジェクト・モデルでアクセス。
use Takuya\BacklogApiClient\Backlog;
$cli = new Backlog($space, $key);
$cli->project('PRJKEY');
$cli->issue('PRJKEY-123');

class Backlog 是为ID搜索而创建的。没有实现更新。使用 class BacklogAPIClient 进行更新。

认证

实现了API键的访问。没有实现OAUTH访问键(BEARER令牌)。

特点

使PHPStorm的IDE自动补全可用。

将数据模型创建为Model类。因此可以追踪 空间→项目→任务→评论→通知 的Backlog层次结构。

使用层次结构可以更容易地获取全部数据。

示例

<?php
use Takuya\BacklogApiClient\Backlog;
$key = getenv('backlog_api_key');
$space = getenv('backlog_space');
$cli = new Backlog($space, $key);
// スペースの取得->プロジェクト一覧->課題一覧
foreach ($cli->space()->projects(Backlog::PROJECTS_ONLY_MINE) as $prj){
  foreach ($prj->issues() as $issue) {
    foreach ($issue->comments() as $comment) {
       print([
        $prj->id,
        $issue->id,
        $comment->id]
    )} 
  }
}

自动补全示例

自动补全Backlog API的函数名。

$cli = new BacklogAPIClient($space, $key);
$cli->...
image

示例

API是通过打开Backlog并查看地址来使用的。

打开任务评论时的地址如下。

https://example.backlog.com/view/MYPRJ-40#comment-8408

可以从地址中读取以下信息。

{
  "スペースKey":"example",
  "プロジェクトKey": "MYPRJ",
  "課題Key": "40",
  "コメントID": "8408"
}

当API文档中写有ProjectIdOrKey时,表示ProjectId或ProjectKey。 ProjectKeyProjectId似乎是1对1对应。使用上述信息访问API。

例如,如下使用。

<?php
// API呼び出し
use Takuya\BacklogApiClient\BacklogAPIClient;
$space = 'example';
$key = 'YOUR_API_KEY';
$cli = new BacklogAPIClient($space, $key);

## プロジェクト取得 
$cli->getProject("MYPRJ");
## 課題取得 
$cli->getIssue("MYPRJ-40");

基本上,通过ID比通过Key更容易访问。

因为大多数API允许通过指定ID进行搜索的请求参数。例如,projectIds[]IssueIds[]等。

因此,创建了用于相互转换ID和Key的方法。

<?php
use Takuya\BacklogApiClient\Backlog;
$cli = new Backlog($space, $key);
$project_id = $cli->projectIdByKeyName("MYPRJ");

API列表

将API的名称、方法和实际API的对应表放入api.html中。

日期和时间

Backlog的API通过 created / updated 返回日期。所有都是UTC。

通过github安装

composer config repositories.'php-nulab-backlog-api-client' \
vcs https://github.com/takuya/php-nulab-backlog-api-client  
composer require takuya/php-nulab-backlog-api-client:master
composer install

通过packagist使用composer安装

composer require takuya/php-nulab-backlog-api-client

开发

安装、测试和开发。

## clone
git clone git@github.com:takuya/php-nulab-backlog-api-client.git
cd php-nulab-backlog-api-client
composer install
## generate api from backlog WebSite.
composer run-script gen_api_methods
## Test api methods.
export backlog_api_key='YOUR_API_KEY'
export backlog_space='xxxspace'
composer run-script test
## test some test case
php vendor/bin/phpunit --filter get_space

示例

更新时的示例

图片上传示例

上传图片,并创建包含图片的评论。

$api = new BacklogAPIClient($space, $key);
$part = [
  'name'=>"file",
  'contents' => file_get_contents(__DIR__.'/../../../../sample.jpg'),
  "filename"=>"sample.jpg"
];
$param = ['multipart' => [$part]];
$ret = $api->postAttachmentFile($param);
$params = [
  'content'=>"画像を貼り付ける\nサブスクに気をつけて\n![image][sample.jpg]\n",
  'attachmentId[]'=>$ret->id,
];
$ret = $api->addComment($key,$params);