Nota Bene: Dieses Projekt verwendet Semver und ChangeLog. Aber es ist keine stabile Major -Version. Jedes kleinere Update (Fe 0,5.* -> 0,6.*) Kann die Kompatibilität rückwärts brechen!
Einfacher PHP7-Framework für schnelle Rastdienste basierend auf Middleware, PSR-7 und React.
Die von Link zugeschnittene Instanz finden Sie auch Beispiele Repo.
$ composer require free-elephants/rest-daemon
Siehe Beispiel in Beispiel/rest-server.php und Dokumentation.
# 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
Jeder Endpoint-Methode-Handler kann mit einer Middleware-ähnlichen Callable-Implementierung oder einer Klasse mit __invoke () -Methode sein.
<?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 );Sehen Sie, wie Sie in einem Skript einen Server für Schritt für Schritt erstellen
Sie können PHP-DI (oder eine andere PSR-11-Container-Implementierung) und die Routing-Dateikonfiguration mit RastServerbuilder verwenden, um mehr Konfigurieren und Codieren weniger zu erhalten.
Siehe Beispiel mit dateibasiertem Routing und Abhängigkeiten Konfiguration: rest-server.php
Sie können mit jeder Methode in Route A Handler in Verbindung gebracht und optional Routen nach Modulen organisieren. Standardmäßig enthalten Server 1 Standardmodul für alle Endpunkte. Siehe Beispiel: Routes.php
Standardmäßig Serverinstanz geben die Sammlung nützliche Middleware an. Sie können es erweitern oder außer Kraft setzen:
<?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 ); Der Methodenhandler jedes Endpunkts wird in diese Sammlung eingewickelt und zwischen definiert wie after und before Middleware aufgerufen. Sie können auch die Standard-Middleware-Sammlung mit Zugriff auf jede integrierte Middleware nach Schlüssel konfigurieren: Diese Sammlung implementiert die ArrayAccess-Schnittstelle.
<?php
$ server -> getMiddlewareCollection ()-> getBefore ()-> offsetUnset ( FreeElephants RestDaemon Middleware MiddlewareRole:: NO_CONTENT_STATUS_SETTER );... wird implementiert ...
... wird implementiert ...