既存の業務アプリ内にある機能を外部から利用出来たらなあ・・・のような要件があり、RestAPIで実装を検討しました。対象のアプリは、今となっては・・・ですが、ZendFramework1が使われています。
こちらにいろいろ書いていますが、Zend_Rest_Controllerを使えばいいっぽい。
開発環境はEclipse + php + XAMPP
XAMPP内のphp/pearの中に、ダウンロードしたZendFramework1.12.20のZIPからlibrary内のZendを配置、XAMPP内のapache/conf/extra/httpd-xammp.confに該当プロジェクトのAliasをセットして環境ができました。
Alias /testapp "C:/xampp/htdocs/TestAPP/html/"
AllowOverride All
Require all granted
テスト用のEclipceプロジェクトはこんな感じで最少構成。
.htaccess でindex.phpに仕向けます。
RewriteEngine on RewriteBase /testapp/ RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
index.phpでdispatchします。
<?php
require_once 'Zend/Controller/Front.php';
$controller = Zend_Controller_Front::getInstance();
$controller->setControllerDirectory('../application/controllers');
$controller->setParam('noViewRenderer', true);
try {
$controller->dispatch();
} catch (Exception $e) {
}
ControllerにZend_Rest_Controllerとして必要なメソッドを追加していきます。
<?php
require_once 'Zend/Rest/Controller.php';
class TestController extends Zend_Rest_Controller {
public function indexAction() {
$this->getResponse()->appendBody("hello world " . $_REQUEST[param1]);
}
public function headAction(){
//TODO
}
public function getAction() {
//TODO
}
public function postAction() {
//TODO
}
public function putAction() {
//TODO
}
public function deleteAction() {
//TODO
}
}
URLをいろいろ意識すると難しそうですが、これなら簡単ですね。

