aktualisiert von Version 3 RC6 für die neueste PHP-Unterstützung
Restler ist ein einfacher und effektiver Multiformat-Web-API-Server, der in PHP geschrieben ist.
Kümmern Sie sich einfach um Ihre Geschäftslogik in PHP, Restler kümmert sich um den Rest!
@url GET my/custom/url/{param}
PHPDoc-Kommentare Die stabilste und aktuellste Version befindet sich im master
, frühere Versionen befinden sich in den Versionszweigen wie v4
, v3
, v2
und v1
.
Der Versionszweig mit der aktuellen Version wie z. B. v5
wird zum Aufbau des nächsten Releases verwendet. Die Dokumentation wird möglicherweise nicht häufig aktualisiert und ist daher den Mutigen vorbehalten.
Feature-Zweige wie features/html
und features/router
dienen lediglich zu Experimentierzwecken, um eine Funktion auszuprobieren. Sie können zusammengeführt werden, wenn sie fertig sind.
Installieren Sie dieses Repository, um die Beispiele auszuprobieren.
Stellen Sie sicher, dass PHP 5.4 oder höher auf Ihrem Server verfügbar ist. Für eine bessere Leistung empfehlen wir die Verwendung der neuesten Version.
Restler verwendet Composer, um seine Abhängigkeiten zu verwalten. Laden Sie zunächst eine Kopie von composer.phar
herunter. Es kann in Ihrem Projektordner oder idealerweise in usr/local/bin
gespeichert werden, um es global für alle Ihre Projekte zu verwenden. Wenn Sie Windows verwenden, können Sie stattdessen das Composer-Windows-Installationsprogramm verwenden.
Sie können Restler installieren, indem Sie den Befehl „create project“ in Ihrem Terminal ausführen. Ersetzen Sie {projectName} durch Ihren tatsächlichen Projektnamen. Es wird ein Ordner mit diesem Namen erstellt und Restler installiert.
php composer.phar create-project luracast/restler {projectName}
Notiz:-
Wenn Sie die zusätzlichen Formate und BDD-Tools nicht benötigen, können Sie >
--no-dev
einschließen, um den Ausschluss von Entwicklungspaketen zu erzwingen.Wenn Sie den Bleading Edge v3-Zweig oder einen der Feature >-Zweige ausprobieren möchten, fügen Sie
3.x-dev
oderdev-features/html
in den obigen Befehl ein
Laden Sie nach der Installation von Composer die neueste Version des Restler-Frameworks herunter und extrahieren Sie deren Inhalt in ein Verzeichnis auf Ihrem Server. Führen Sie als Nächstes im Stammverzeichnis Ihres Restler-Projekts den Befehl php composer.phar install
(oder composer install
) aus, um alle Abhängigkeiten des Frameworks zu installieren. Für diesen Vorgang muss Git auf dem Server installiert sein, um die Installation erfolgreich abzuschließen.
Wenn Sie das Restler-Framework aktualisieren möchten, können Sie den Befehl php composer.phar update
ausführen.
Hinweis: – Wenn Sie Composer und Git nicht auf Ihrem Server installieren dürfen, können Sie sie auf Ihrem Entwicklungscomputer installieren und ausführen. Die resultierenden Dateien und Ordner können hochgeladen und auf dem Server verwendet werden.
Idealerweise sollte der öffentliche Ordner als Ihr Web-Root zugeordnet werden. Dies ist optional, es wird jedoch empfohlen, die Offenlegung nicht benötigter Dateien und Ordner zu vermeiden.
Probieren Sie die Live-Beispiele in Ihrem lokalen Host aus.
Sie können den in PHP integrierten Server mit
composer serve
-Befehl starten.
Aktualisieren Sie die in behat.yml
angegebene base_url und versuchen Sie dann den folgenden Befehl
vendor/bin/behat
Alternativ können Sie
composer test
ausführen
Dadurch werden die Beispiele beispielsweise anhand der erwarteten Verhaltensweisen getestet
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
Alles klar, Happy RESTling! :) :)
Wir haben zwei Möglichkeiten, Ihren eigenen Restler-API-Server zu erstellen
Die bequemste Option ist die Verwendung von Anwendungsvorlagen wie Restler Application, die über Integrationen mit vielen Paketen verfügen, um uns auch bei der Geschäftslogik zu helfen. Wenn Sie diese Option wählen, wählen Sie einen Zweig in diesem Repository aus und fahren Sie mit den dort verfügbaren Anweisungen fort.
Erstellen Sie ein Projekt von Grund auf, damit Sie die volle Kontrolle über jeden Aspekt Ihrer Anwendung haben. Wenn Sie diese Option wählen, befolgen Sie die folgenden Schritte.
composer init
aus und folgen Sie den Anweisungen, um composer.json
zu erstellenrestler/framework
und ^5
für die Versionsbeschränkung ein.composer require restler/framework:^5
ausführenWir verwenden
restler/framework
anstelle vonluracast/restler
um den Platzbedarf für das Paket zu reduzieren. Es stammt von https://github.com/Luracast/Restler-Framework und enthält hier nur den Inhalt des src-Ordners.
Auch wenn Sie ganz von Grund auf neu erstellen, hilft Ihnen das Auschecken der Anwendungsvorlagen bei der Entscheidung über die Ordnerstruktur und bei der Suche nach anderen nützlichen Paketen.
Erstellen Sie Ihre API-Klassen mit allen erforderlichen öffentlichen und geschützten Methoden
Erstellen Sie das Gateway (public/index.php) wie folgt
<?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
Aktivieren Sie das URL-Rewriting
Stellen Sie sicher, dass alle Anfragen an index.php gehen, indem Sie URL-Rewriting für Ihre Website aktivieren
Zum Beispiel:-
Wenn Sie Apache verwenden, können Sie eine .htaccess-Datei verwenden, z
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 >
Hinweis: – Dies erfordert, dass
AllowOverride
in der Dateihttpd.conf
aufAll
“ stattNone
gesetzt ist, und erfordert möglicherweise einige Anpassungen an einigen Serverkonfigurationen. Weitere Informationen finden Sie in der Dokumentation zu mod_rewrite.
Wenn Sie Nginx verwenden, müssen Sie sicherstellen, dass Sie den server_name
festlegen und die PHP-Skripte an Fast CGI (PHP-FPM) übergeben, das 127.0.0.1:9000 überwacht
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
}
Hinweis: – Dies erfordert, dass PHP und PHP-FPM ordnungsgemäß installiert und konfiguriert sind. Weitere Informationen finden Sie im PHP FastCGI-Beispiel.
Passen Sie es genau an Ihre Bedürfnisse an
<?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
Entdecken Sie die API und probieren Sie sie aus, indem Sie explorer/index.html
im Webstammverzeichnis Ihres Browsers öffnen
Viel Spaß beim Entdecken! :) :)
Hinweis: Die Verwendung von eAccelerator kann dazu führen, dass Restler fehlschlägt, da die Kommentare entfernt werden. Weitere Informationen finden Sie hier
Restler unterstützt Anmerkungen in Form von PHPDoc-Kommentaren zur API-Feinabstimmung
Sie sind unter Anmerkungen ausführlich dokumentiert
Um Ihre API zu schützen, authentifizieren Sie gültige Benutzer und lassen Sie sie zu
<?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
Standardmäßig wird Restler im Debug-Modus ausgeführt, der für API-Entwickler besser abgestimmt ist, indem detaillierte Fehlermeldungen angezeigt und das API-Ergebnis in eine von Menschen lesbare Form gebracht werden
Wenn Sie den Produktionsmodus aktivieren, erzielen Sie eine gewisse Leistungssteigerung, da die Routen (das Parsen von Kommentaren erfolgt nur einmal statt bei jedem API-Aufruf) und nur wenige andere Dateien zwischengespeichert werden und keine Debug-Informationen ausgegeben werden
<?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
//...
Hinweis: Wenn der Produktionsmodus auf
true
eingestellt ist, wird immer der Cache verwendet und Änderungen und neue Routen, falls vorhanden, werden nicht erkannt. Ihre Continuous-Integration-Pipeline oder Ihr Git-Hook sollten diese Datei während des Bereitstellungsprozesses löschen. Alternativ können Sie einen zweiten Parameter an den Restler-Konstruktor übergeben, um den Cache zu aktualisieren, wenn Änderungen angewendet werden müssen.
composer serve
-Befehl.composer test
Testbefehl auszuführen, nachdem der Server mit composer serve
in einem anderen Fenster ausgeführt wurde.$restler->addAPIClass("Luracast/Restler/Explorer", 'swagger')
es /swagger
zu.Die Routes-Klasse wurde verbessert und bietet nun eine findAll-Methode zum Auflisten aller Routen für eine bestimmte Version der API mit Ausnahme der angegebenen Pfade und http-Methoden.
Die magischen Eigenschaften, die von Routen verwendet werden, wenn sie gefunden werden, wobei tatsächliche Eigenschaften ignoriert werden. Dies ist nützlich für dynamische Modellklassen wie Eloquent.
Routen ermöglichen jetzt, dass @required
und @properties
Arrays sind, wenn der Parameter ein Objekt ist. Dies hilft uns, die Eigenschaften für jede API-Methode unterschiedlich auszuwählen. Beispiel {@properties property1,property2,property3}
{@required property1,property2}
sorgt dafür, dass eine API nur nach 3 Eigenschaften sucht, von denen 2 erforderlich sind.
Die Nav-Klasse wurde optimiert. Es nutzt jetzt Routes::findAll()
zusammen mit der Explorer-Klasse
Die Restler-Klasse verfügt über die Methode setBaseUrls zum Festlegen akzeptabler Basis-URLs, die mit $_SERVER['HTTP_HOST']
festgelegt werden können. Lesen Sie diesen Artikel, um zu verstehen, warum. Dies ist in den folgenden Fällen nützlich:
Die Restler-Klasse ermöglicht jetzt das Überschreiben des Statuscodes durch Festlegen $this->restler->responseCode
über die API-Methode.
Verbesserte Forms-Klasse zum Senden der eingebetteten Eigenschaften an die Emmet-Vorlage. Zum Beispiel
/**
* {@id form1}
*
* @param string $name
* @param int $age
*/
Erzeugt das folgende Formular
<form role="form" id="form1" method="POST" ...
weil die Emmet-Vorlage eine ID enthält (siehe unten)
form[role=form id=$id# name=$name# method=$method# action=$action# enctype=$enctype#]
@param
Kommentaren, um HTML-Attribute (z. B. ID, Accept usw.) einfach festzulegen@class
-Kommentar festlegen können. Beispiel: - @class Validator {@holdException}
sorgt dafür, dass der Validator die Ausnahmen hält, anstatt sie auszulösen@property
, @property-read
, @property-write
analysieren, um die Dokumentation der dynamischen Eigenschaften zu unterstützen.string[]
, DateTime[]
Scope::$resolver
-Eigenschaft hinzu.String
Klasse in Text
für PHP 7-Unterstützung umbenannt (String ist ein reserviertes Schlüsselwort in PHP7)