最新の PHP サポートのためにバージョン 3 RC6 からアップグレードされました
Restler は、PHP で書かれたシンプルで効果的なマルチフォーマット Web API サーバーです。
PHP でビジネス ロジックを処理するだけで、restler が REST を処理します。
@url GET my/custom/url/{param}
PHPDoc コメントの使用最も安定した最新のバージョンはmaster
ブランチにあり、以前のバージョンはv4
、 v3
、 v2
、 v1
などのバージョン ブランチにあります。
v5
などの現在のバージョンのバージョン ブランチは、次のリリースを構築するために使用されます。このドキュメントは頻繁に更新されない可能性があるため、勇気のある人のために用意されています。
features/html
やfeatures/router
などの機能ブランチは、機能を試すための純粋な実験目的です。準備ができたら、それらはマージされる可能性があります。
このリポジトリをインストールして例を試してください。
PHP 5.4 以降がサーバーで利用可能であることを確認してください。パフォーマンスを向上させるために、最新バージョンを使用することをお勧めします。
Restler は Composer を使用して依存関係を管理します。まず、 composer.phar
のコピーをダウンロードします。これはプロジェクト フォルダーに保存することも、理想的にはusr/local/bin
に保存してすべてのプロジェクトでグローバルに使用することもできます。 Windows を使用している場合は、代わりに Composer Windows インストーラーを使用できます。
Restler をインストールするには、ターミナルで create project コマンドを実行します。 {projectName} を実際のプロジェクト名に置き換えます。その名前のフォルダーが作成され、Restler がインストールされます。
php composer.phar create-project luracast/restler {projectName}
注記:-
追加のフォーマットと BDD ツールが不要な場合は、 >
--no-dev
を含めて、dev パッケージの除外を強制できます。最先端の v3 ブランチまたは機能のいずれかを試したい場合は、上記のコマンドに
3.x-dev
またはdev-features/html
を含めます。
Composer をインストールした後、最新バージョンの Restler フレームワークをダウンロードし、その内容をサーバー上のディレクトリに抽出します。次に、Restler プロジェクトのルートでphp composer.phar install
(またはcomposer install
) コマンドを実行して、すべてのフレームワークの依存関係をインストールします。このプロセスでインストールを正常に完了するには、サーバーに Git がインストールされている必要があります。
Restler フレームワークを更新する場合は、 php composer.phar update
コマンドを発行できます。
注:-サーバーに Composer と git をインストールすることが許可されていない場合は、開発マシンにインストールして実行できます。作成されたファイルとフォルダーはサーバーにアップロードして使用できます。
理想的には、パブリック フォルダーを Web ルートとしてマップする必要があります。これはオプションですが、不要なファイルやフォルダーを公開しないようにすることをお勧めします。
ローカルホストで実際の例を試してください。
PHP の組み込みサーバーは、
composer serve
コマンドを使用して起動できます。
behat.yml
で指定されたbase_urlを更新して、次のコマンドを試してください。
vendor/bin/behat
あるいは、
composer test
実行することもできます
これにより、予想される動作に対してサンプルがテストされます。たとえば、
Feature : Testing CRUD Example
Scenario : Creating new Author with JSON
Given that I want to make a new "Author"
And his "name" is "Chris"
And his "email" is "[email protected]"
And the request is sent as JSON
When I request "/examples/_007_crud/authors"
Then the response status code should be 200
And the response should be JSON
And the response has a "id" property
準備は完了です、ハッピー RESTling! :)
独自のrestler APIサーバーを作成するには2つのオプションがあります
最も便利なオプションは、ビジネス ロジックにも役立つ多くのパッケージと統合されている Restler Application などのアプリケーション テンプレートを使用することです。このオプションを選択した場合は、そのリポジトリ内のブランチを選択し、そこで利用可能な手順に進みます。
プロジェクトを最初から作成すると、アプリケーションのあらゆる側面を完全に制御できるようになります。このオプションを選択した場合は、以下の手順に従ってください。
composer init
実行し、手順に従ってcomposer.json
を作成します。restler/framework
と入力し、バージョン制約として^5
入力します。composer require restler/framework:^5
実行することもできます。パッケージに必要なスペースを削減するために
luracast/restler
の代わりにrestler/framework
使用しています。これは https://github.com/Luracast/Restler-Framework から来ており、ここには src フォルダーの内容のみが含まれています。
ゼロから構築する場合でも、アプリケーション テンプレートをチェックアウトすると、フォルダー構造を決定したり、他の有用なパッケージを見つけたりするのに役立ちます。
必要なパブリック メソッドと保護されたメソッドをすべて備えたAPI クラスを作成します
以下のようにゲートウェイ(public/index.php)を作成します。
<?php
require_once __DIR__ . ' /../vendor/autoload.php ' ;
use Luracast Restler Restler ;
$ r = new Restler ();
$ r -> addAPIClass ( ' YourApiClassNameHere ' ); // repeat for more
$ r -> handle (); //serve the response
URL書き換えを有効にする
Web サイトの URL 書き換えを有効にして、すべてのリクエストが Index.php に送信されるようにします。
例えば:-
Apache を使用している場合は、次のような .htaccess ファイルを使用できます。
DirectoryIndex index.php
< IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ index.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
</ IfModule >
< IfModule mod_php5.c>
php_flag display_errors On
</ IfModule >
注: -これには、
httpd.conf
ファイルでAllowOverride
をNone
ではなくAll
に設定する必要があり、一部のサーバー構成では調整が必要になる場合があります。詳細については、mod_rewrite のドキュメントを参照してください。
Nginx を使用している場合は、 server_name
を設定し、127.0.0.1:9000 でリッスンする高速 CGI (PHP-FPM) に PHP スクリプトを渡す必要があります。
server {
listen 80;
server_name api.luracast.com; //change it to match your server name
//... other stuff
location ~ .php$ {
root /var/www/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include fastcgi_params;
}
//... other stuff
}
注:-これには、PHP、PHP-FPM が適切にインストールされ、設定されている必要があります。詳細については、「PHP FastCGI の例」を参照してください。
ニーズに合わせて微調整
<?php
require_once __DIR__ . ' /../vendor/autoload.php ' ;
use Luracast Restler Restler ;
use Luracast Restler Defaults ;
//set the defaults to match your requirements
Defaults:: $ throttle = 20 ; //time in milliseconds for bandwidth throttling
//setup restler
$ r = new Restler ();
$ r -> addAPIClass ( ' YourApiClassNameHere ' ); // repeat for more
$ r -> addAPIClass ( ' Explorer ' ); //from restler framework for API Explorer
$ r -> addFilterClass ( ' RateLimit ' ); //Add Filters as needed
$ r -> handle (); //serve the response
API を調べて、ブラウザーの Web ルートからexplorer/index.html
開いて試してみます。
楽しい探検を! :)
注:- eAccelerator を使用すると、コメントが削除されるため、restler が失敗する可能性があります。詳細については、こちらをご覧ください
Restler は、API の微調整のために PHPDoc コメントの形式でアノテーションをサポートします
これらは「注釈」に詳細に記載されています。
APIを保護するには、有効なユーザーを認証して許可します
<?php
require_once ' ../restler.php ' ;
use Luracast Restler Restler ;
$ r = new Restler ();
$ r -> addAPIClass ( ' YourApiClassNameHere ' ); // repeat for more
$ r -> addAuthenticationClass ( ' CustomAuth ' ); //Add Authentication classes as needed
$ r -> handle (); //serve the response
デフォルトでは、Restler は、詳細なエラー メッセージを表示し、API 結果を人間が読み取れる形式に整形することにより、API 開発者向けにさらに微調整されたデバッグ モードで実行されます。
本番モードをオンにすると、ルート (コメント解析は API 呼び出しごとにではなく 1 回だけ行われます) と他のいくつかのファイルがキャッシュされ、デバッグ情報の提供が回避されるため、パフォーマンスがいくらか向上します。
<?php
require_once ' ../restler.php ' ;
use Luracast Restler Restler ;
//setup restler
$ r = new Restler ( true ); //turn on production mode by passing true.
//If you are using file based cache (the default) make sure cache folder is
//writable. when you make changes to your code make sure you delete the
// routes.php inside the cache folder
//...
注:-運用モードが
true
に設定されている場合、常にキャッシュが使用され、変更や新しいルートが存在する場合でも検出されません。継続的インテグレーション パイプラインまたは git フックは、デプロイメント プロセス中にこのファイルを削除する必要があります。あるいは、変更を適用する必要があるときにキャッシュを更新するために、2 番目のパラメーターをrestler コンストラクターに渡すこともできます。
composer serve
コマンドによる PHP 開発サーバーのサポートを追加します。composer serve
使用してサーバーを実行した後、 composer test
コマンドを使用してテストを実行する機能。$restler->addAPIClass("Luracast/Restler/Explorer", 'swagger')
/swagger
にマップします。Routes クラスが改善され、指定されたパスと http メソッドを除く、API の特定のバージョンのすべてのルートをリストする findAll メソッドが提供されました。
実際のプロパティを無視して、ルートが見つかったときにルートによって利用される魔法のプロパティ。これは、Eloquent などの動的モデル クラスに役立ちます。
パラメーターがオブジェクトの場合、ルートでは@required
と@properties
配列にすることができるようになりました。これは、各 API メソッドのプロパティを異なる方法で選択するのに役立ちます。例{@properties property1,property2,property3}
{@required property1,property2}
は、API が 3 つのプロパティのみを検索し、そのうち 2 つは必須です。
Nav クラスを最適化しました。 Explorer クラスとともにRoutes::findAll()
を使用するようになりました。
Restler クラスには、 $_SERVER['HTTP_HOST']
を使用して設定できる許容可能なベース URL を設定するための setBaseUrls メソッドがあります。この記事を読んでその理由を理解してください。これは次のような場合に役立ちます。
Restler クラスでは、API メソッドから$this->restler->responseCode
設定することでステータス コードをオーバーライドできるようになりました。
埋め込みプロパティを emmet テンプレートに送信するように Forms クラスを改善しました。例えば
/**
* {@id form1}
*
* @param string $name
* @param int $age
*/
次のフォームを生成します
<form role="form" id="form1" method="POST" ...
emmet テンプレートには ID が含まれているため (下記を参照)
form[role=form id=$id# name=$name# method=$method# action=$action# enctype=$enctype#]
@param
コメントを含む埋め込みプロパティを使用して、HTML 属性 (id、accept など) を簡単に設定します。@class
コメントでプロパティを設定できるようになりました。例: - @class Validator {@holdException}
バリデーターが例外をスローする代わりに例外を保持するようにします。@property
、 @property-read
、 @property-write
を解析できるようになりました。string[]
、 DateTime[]
などの短い配列構文をサポートします。Scope::$resolver
プロパティを使用して、選択した外部 DI コンテナのサポートを追加します。String
クラスの名前をText
に変更しました (String は php7 の予約キーワードです)