Nota Bene: Ce projet utilise Semver et Changelog. Mais ce n'est pas une version majeure stable. Toute mise à jour mineure (Fe 0.5. * -> 0,6. *) Peut rompre la compatibilité en arrière!
Framework PHP7 simple pour les services de repos de construction rapide basés sur le middleware, PSR-7 et React.
L'instance en cours peut être trouvée par Link, voir également l'exemple de répension.
$ composer require free-elephants/rest-daemon
Voir l'exemple dans l'exemple / rest-server.php et la documentation.
# 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
Tout gestionnaire de méthode Endpoint peut être implémentation callable de type middleware: fonction ou classe avec la méthode __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 );Voir comment créer un serveur pour étape par étape dans un script
Vous pouvez utiliser PHP-DI (ou une autre implémentation du conteneur PSR-11) et de routage de configuration de fichier avec RESTSERVERBUILDER pour plus de configuration et de codage moins.
Voir l'exemple avec le routage basé sur les fichiers et les dépendances Configuration: rest-server.php
Vous pouvez créer un lien avec chaque méthode de la route un gestionnaire et organiser éventuellement des routes par modules. Par défaut, le serveur contient 1 module par défaut pour tous les points de terminaison. Voir l'exemple: routes.php
Par défaut, l'instance de serveur fournit une collection avec un middleware utile. Vous pouvez l'étendre ou le remplacer:
<?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 ); Le gestionnaire de méthodes de chaque point de terminaison sera enveloppé à cette collection et appelé entre défini comme after et before middleware. Vous pouvez également configurer la collection de middleware par défaut avec l'accès à chaque middleware intégré par clé: cette collection implémente l'interface ArrayAccess.
<?php
$ server -> getMiddlewareCollection ()-> getBefore ()-> offsetUnset ( FreeElephants RestDaemon Middleware MiddlewareRole:: NO_CONTENT_STATUS_SETTER );... sera implémenté ...
... sera implémenté ...