mis à niveau à partir de la version 3 RC6 pour le dernier support PHP
Restler est un serveur API Web multiformat simple et efficace écrit en PHP.
Gérez simplement votre logique métier en php, Restler s'occupera du REST !
@url GET my/custom/url/{param}
commentaires PHPDoc La version la plus stable et la plus récente se trouve dans la branche master
, les versions précédentes se trouvent dans les branches de version telles que v4
, v3
, v2
et v1
.
La branche de version avec la version actuelle telle que v5
est utilisée pour créer la prochaine version. Sa documentation n'est peut-être pas mise à jour fréquemment et est donc réservée aux plus audacieux.
Les branches de fonctionnalités telles que features/html
et features/router
sont uniquement destinées à des fins d'expérimentation pour essayer une fonctionnalité. Ils pourront être fusionnés lorsqu’ils seront prêts.
Installez ce référentiel pour essayer les exemples.
Assurez-vous que PHP 5.4 ou supérieur est disponible sur votre serveur. Nous vous recommandons d'utiliser la dernière version pour de meilleures performances.
Restler utilise Composer pour gérer ses dépendances. Tout d’abord, téléchargez une copie de composer.phar
. Il peut être conservé dans votre dossier de projet ou idéalement dans usr/local/bin
pour l'utiliser globalement pour tous vos projets. Si vous êtes sous Windows, vous pouvez utiliser le programme d'installation de Windows Composer à la place.
Vous pouvez installer Restler en exécutant la commande create project dans votre terminal. Remplacez {projectName} par le nom réel de votre projet. Il créera un dossier avec ce nom et installera Restler.
php composer.phar create-project luracast/restler {projectName}
Note:-
Si vous ne souhaitez pas les formats supplémentaires et les outils BDD, vous pouvez inclure >
--no-dev
pour appliquer l'exclusion des packages de développement.Si vous souhaitez essayer la branche bleading edge v3 ou l'une des branches feature >, incluez
3.x-dev
oudev-features/html
dans la commande ci-dessus.
Après avoir installé Composer, téléchargez la dernière version du framework Restler et extrayez son contenu dans un répertoire de votre serveur. Ensuite, à la racine de votre projet Restler, exécutez la commande php composer.phar install
(ou composer install
) pour installer toutes les dépendances du framework. Ce processus nécessite que Git soit installé sur le serveur pour terminer l'installation avec succès.
Si vous souhaitez mettre à jour le framework Restler, vous pouvez émettre la commande php composer.phar update
.
Remarque : - Si vous n'êtes pas autorisé à installer composer et git sur votre serveur, vous pouvez les installer et les exécuter sur votre machine de développement. Les fichiers et dossiers résultants peuvent être téléchargés et utilisés sur le serveur.
Idéalement, le dossier public doit être mappé en tant que racine Web. C'est facultatif, mais il est recommandé d'éviter d'exposer les fichiers et dossiers inutiles.
Essayez les exemples en direct sur votre hôte local.
Vous pouvez lancer le serveur intégré de PHP avec la commande
composer serve
.
Mettez à jour la base_url spécifiée dans behat.yml
, puis essayez la commande suivante
vendor/bin/behat
vous pouvez également exécuter
composer test
Cela permettra de tester les exemples par rapport aux comportements attendus, par exemple
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
Tout est prêt, joyeux RESTling ! :)
Nous avons deux options pour créer votre propre serveur API Restler
L'option la plus pratique consiste à utiliser des modèles d'application tels que Restler Application, qui intègre de nombreux packages pour nous aider également avec la logique métier. Si vous choisissez cette option, sélectionnez une branche dans ce référentiel et suivez les instructions qui y sont disponibles.
Créez un projet à partir de zéro afin d'avoir un contrôle total sur tous les aspects de votre application. Si vous choisissez cette option, suivez les étapes ci-dessous.
composer init
et suivez pour créer composer.json
restler/framework
et ^5
pour la contrainte de version.composer require restler/framework:^5
nous utilisons
restler/framework
au lieu deluracast/restler
pour réduire l'espace requis pour le package. Il vient de https://github.com/Luracast/Restler-Framework et contient uniquement le contenu du dossier src ici.
Même lorsque vous créez à partir de zéro, consulter les modèles d'application vous aidera à prendre des décisions concernant la structure des dossiers et à trouver d'autres packages utiles.
Créez vos classes API avec toutes les méthodes publiques et protégées nécessaires
Créez la passerelle (public/index.php) comme suit
<?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
Activer la réécriture d'URL
Assurez-vous que toutes les requêtes sont dirigées vers index.php en activant la réécriture d'URL pour votre site Web.
Par exemple:-
Si vous êtes sur Apache, vous pouvez utiliser un fichier .htaccess tel que
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 >
Remarque : - Cela nécessite que
AllowOverride
soit défini surAll
au lieu deNone
dans le fichierhttpd.conf
, et peut nécessiter quelques ajustements sur certaines configurations de serveur. Reportez-vous à la documentation mod_rewrite pour plus d'informations.
Si vous êtes sur Nginx, vous devez vous assurer de définir le server_name
et de transmettre les scripts PHP à l'écoute rapide cgi (PHP-FPM) sur 127.0.0.1:9000.
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
}
Remarque : - Cela nécessite que PHP, PHP-FPM soit correctement installé et configuré. Reportez-vous à l'exemple PHP FastCGI pour plus d'informations.
Ajuster en fonction de vos besoins
<?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
Explorez l'API et essayez-la en ouvrant explorer/index.html
à partir de la racine Web de votre navigateur.
Bonne exploration ! :)
Remarque : - L'utilisation d'eAccelerator peut entraîner l'échec de Restler car il supprime les commentaires. Plus d'informations peuvent être trouvées ici
Restler prend en charge les annotations sous forme de commentaires PHPDoc pour le réglage fin de l'API
Ils sont documentés en détail sous Annotations
Afin de protéger votre API, authentifiez-vous et autorisez les utilisateurs valides
<?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
Par défaut, Restler s'exécute en mode débogage, plus adapté aux développeurs d'API, en affichant des messages d'erreur détaillés et en embellissant le résultat de l'API sous forme de lecture humaine.
En activant le mode production, vous obtiendrez une amélioration des performances car il mettra en cache les routes (l'analyse des commentaires n'a lieu qu'une seule fois au lieu de chaque appel d'API), quelques autres fichiers et évitera de divulguer des informations de débogage.
<?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
//...
Remarque : - Lorsque le mode de production est défini sur
true
il utilise toujours le cache et ne détecte pas les modifications ni les nouvelles routes, le cas échéant. Votre pipeline d'intégration continue ou votre git hook doit supprimer ce fichier pendant le processus de déploiement. Vous pouvez également transmettre le deuxième paramètre au constructeur Restler pour actualiser le cache lorsque des modifications doivent être appliquées.
composer serve
.composer test
après avoir exécuté le serveur avec composer serve
dans une autre fenêtre.$restler->addAPIClass("Luracast/Restler/Explorer", 'swagger')
le mappe à /swagger
.Classe Routes améliorée pour fournir une méthode findAll pour répertorier toutes les routes pour une version spécifique de l'API, à l'exclusion des chemins et méthodes http spécifiés.
Les propriétés magiques utilisées par les itinéraires lorsqu'elles sont trouvées, ignorant les propriétés réelles. Ceci est utile pour les classes de modèles dynamiques telles qu'Eloquent.
Les routes permettent désormais à @required
et @properties
d'être des tableaux lorsque le paramètre est un objet. Cela nous aide à choisir différemment les propriétés de chaque méthode API. Exemple {@properties property1,property2,property3}
{@required property1,property2}
crée une API pour rechercher uniquement 3 propriétés et 2 d'entre elles sont requises.
Optimisation de la classe Nav. Il utilise désormais Routes::findAll()
, ainsi que la classe Explorer
La classe Restler a la méthode setBaseUrls pour définir des URL de base acceptables qui peuvent être définies à l'aide de $_SERVER['HTTP_HOST']
. Lisez cet article pour comprendre pourquoi. Ceci est utile dans les cas suivants lorsque
La classe Restler permet désormais de remplacer le code d'état en définissant $this->restler->responseCode
à partir de la méthode API.
Classe Forms améliorée pour envoyer les propriétés intégrées au modèle Emmet. Par exemple
/**
* {@id form1}
*
* @param string $name
* @param int $age
*/
Génère le formulaire suivant
<form role="form" id="form1" method="POST" ...
parce que le modèle Emmet contient un identifiant (voir ci-dessous)
form[role=form id=$id# name=$name# method=$method# action=$action# enctype=$enctype#]
@param
pour définir facilement les attributs HTML (par exemple id, accepter, etc.)@class
. Exemple : - @class Validator {@holdException}
oblige le validateur à conserver les exceptions au lieu de les lancer@property
, @property-read
, @property-write
pour prendre en charge la documentation des propriétés dynamiques.string[]
, DateTime[]
Scope::$resolver
.String
renommée en Text
pour le support PHP 7 (String est un mot-clé réservé en php7)