Nota Bene:このプロジェクトでは、SemverとChangelogを使用しています。しかし、それは安定したメジャーバージョンではありません。マイナーアップデート(Fe 0.5。* - > 0.6。*)は、後方互換性を破ることができます!
ミドルウェア、PSR-7、および反応に基づいた高速ビルディングレストサービスのためのシンプルなPHP7フレームワーク。
実行されたインスタンスはリンクによって見つけることができます。また、レポの例を参照してください。
$ composer require free-elephants/rest-daemon
例/rest-server.phpおよびドキュメントの例を参照してください。
# your rest-server.php script
$server = new RestServer('127.0.0.1', 8080, '0.0.0.0', ['*']); // <- it's default arguments values
$server->run();
# can be runned as
$ php ./rest-server.php
エンドポイントメソッドハンドラーは、ミドルウェアのような呼び出し可能な実装:__ invoke()メソッドを備えた機能またはクラスにすることができます。
<?php
class GetAttributeHandler extends AbstractEndpointMethodHandler
{
public function __invoke ( ServerRequestInterface $ request , ResponseInterface $ response , callable $ next )
{
$ name = $ request -> getAttribute ( ' name ' , ' World ' );
$ response -> getBody ()-> write ( ' {
"hello": " ' . $ name . ' !"
} ' );
return $ next ( $ request , $ response );
}
}
$ greetingAttributeEndpoint = new BaseEndpoint ( ' /greeting/{name} ' , ' Greeting by name in path ' );
$ greetingAttributeEndpoint -> setMethodHandler ( ' GET ' , new GetAttributeHandler ());
$ server -> addEndpoint ( $ greetingAttributeEndpoint );1つのスクリプトで段階的にサーバーを構築する方法をご覧ください
PHP-DI(または別のPSR-11コンテナの実装)を使用して、RestServerBuilderを使用したファイル構成をルーティングして、設定とコーディングをより少なくすることができます。
ファイルベースのルーティングと依存関係の例を参照してください構成:rest-server.php
ルートAハンドラーのすべてのメソッドにリンクし、オプションでモジュールごとにルートを整理できます。デフォルトでは、すべてのエンドポイントの1つのデフォルトモジュールが含まれています。例:routes.phpを参照してください
デフォルトでは、サーバーインスタンスがいくつかの便利なミドルウェアを備えたコレクションを提供します。あなたはそれを拡張またはオーバーライドすることができます:
<?php
$ requestCounter = function (
ServerRequestInterface $ request ,
ResponseInterface $ response ,
callable $ next
) {
static $ requestNumber = 0 ;
printf ( ' [%s] request number #%d handled ' . PHP_EOL , date ( DATE_ISO8601 ), ++ $ requestNumber );
return $ next ( $ request , $ response );
};
$ extendedDefaultMiddlewareCollection = new DefaultEndpointMiddlewareCollection ([], [ $ requestCounter ]);
$ server -> setMiddlewareCollection ( $ extendedDefaultMiddlewareCollection );すべてのエンドポイントのメソッドハンドラーは、このコレクションにラップされ、後にミドルウェアのafterとbefore定義された間に呼び出されます。また、キーによるすべての内蔵ミドルウェアへのアクセスを備えたデフォルトのミドルウェアコレクションを構成することもできます。このコレクションは、ArrayAccessインターフェイスを実装します。
<?php
$ server -> getMiddlewareCollection ()-> getBefore ()-> offsetUnset ( FreeElephants RestDaemon Middleware MiddlewareRole:: NO_CONTENT_STATUS_SETTER );...実装されます...
...実装されます...