プロジェクト

全般

プロフィール

redmine.org の Rest_api_with_php の日本語訳です。

PHP での REST API の使用法

PHP には PHP ActiveResource という Rails の REST API を使用するための軽量なライブラリがあります。
以下にその使用例を記述します。

<?php
require_once ('ActiveResource.php');

class Issue extends ActiveResource {
    var $site = 'http://username:password@192.168.199.129:3000/';
    var $request_format = 'xml'; // REQUIRED!
}

// チケットの作成
$issue = new Issue (array ('subject' => 'XML REST API', 'project_id' => '1'));
$issue->save ();
echo $issue->id;

// チケットの取得
$issues = $issue->find ('all');
for ($i=0; $i < count($issues); $i++) {
    echo $issues[$i]->subject;
}

// ID で指定したチケットの取得と更新
$issue->find (1);
echo $issue->subject;
$issue->set ('subject', 'This is the new subject')->save ();

// チケットの削除
$issue->find (1);
$issue->destroy ();
?>

既知の問題

  • かなり長い"説明"が記述されている場合には、 WEB サーバーは 417(Bad Expectation) エラーを返す可能性があります。
    ActiveResource.php の 381 行目を次のように書き直して下さい。
    curl_setopt ($ch, CURLOPT_HTTPHEADER, array ('Expect:',"Content-Type: text/xml", "Length: " . strlen ($params)));

訳注: もう一つ不具合の対処法が記述されていましたが、今リリースされている ActiveResource.php のバージョンでは対応済みのようなので、翻訳していません。