REST-API mittels PHP & Lumen
Im Artikel Einfache REST-API mittels PHP habe ich ein einfaches Beispiel gezeigt wie nur mittels PHP eine REST-API erstellt werden kann. Ohne extra Frameworks ist dies allerdings recht unbequem, da man viel selbst implementieren muss und am Ende oft mit einer unübersichtlichen Liste an Dateien endet.
In diesem Artikel präsentiere ich euch Lumen, ein schlankes Framework zur einfachen Erstellung von REST-APIs mittels PHP.
Was ist Lumen?
Lumen, welches ebenfalls von Laravel, entwickelt wird, ist ein beliebtes PHP Micro-Framework, speziell für die Erstellung von Programmschnittstellen (APIs). Tendenziell lässt sich auch Laravel für die Erstellung von APIs nutzen, allerdings enthält Laravel recht viel Overhead-Code den man nicht unbedingt benötigt wenn man nur eine API erstellen möchte.
Lumen macht es einfach, die verschiedenen Routen der API zu definieren und mit Logik zu versehen. Wo ihr also vorher eine unübersichtliche Anzahl an PHP-Dateien habt, habt ihr nur ein paar wenige Dateien die die Routen eurer API definieren. Gerade bei großen Anwendungen, wie z.B. Bitqt (Anmeldung), macht dies das Leben einfacher.
Installation
Für die Installation benötigt ihr zuerst composer, eine Paketverwaltung für PHP. Nach der Installation von composer geht ihr in der Kommandozeile in den Ordner, den ihr für euer Projekt verwenden wollt.
Dort führt ihr dann folgenden Befehl aus:
1 |
composer create-project --prefer-dist laravel/lumen todo |
Für weitere Infos zur Installation habt einen Blick auf die Lumen Documentation.
Datenbankverbindung einrichten
Als nächsten müssen wir im Lumen-Framework die Datenbank-Verbindung hinterlegen. Dazu öffnen wir die .env-Datei. Dort finden wir mehrere Einträge die die Datenbankverbindung spezifiziert:
1 2 3 4 5 6 7 |
DB_CONNECTION=mysql DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret |
Hier müsst ihr die entsprechenden Werte eurer Datenbank hinterlegen.
Routen anlegen
Als nächstes geht es daran, die Routen zu definieren. Eine Route entspricht dabei einer Funktionalität eurer Webanwendung, für eine To-Do-Liste könnte man z.B. Routen für das Anzeigen der To-Do-Liste haben, für das Bearbeiten eines Eintrags, für das Hinzufügen eines neuen Eintrags oder zur Löschung eines Eintrags. Große Webseiten, wie Beispielsweise crypto genisus (Anmeldung), können hunderte oder tausende solcher Routen haben. Hier heißt es, sich vorab ein gutes System zu überlegen und diese Routen übersichtlich zu definieren.
Um eine Route in Lumen anzulegen öffnet ihr die routes/web.php Datei:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php use Illuminate\Http\Request; //Anzeigen aller Einträge der To-Do-Liste $router->get('/overview', function () { return app('db')->select("SELECT * FROM todo ORDER BY id"); }); // Hinzufügen eines neuen Eintrags $router->post('/add', function (Request $request) { $text = trim($request->input("text")); if(strlen($text) > 0) { app('db')->insert('insert into todo (text) values (?)', [$text]); return ["ok" => true]; } return ["ok" => false]; }); |
Hier haben wir zwei Routen angelegt. Eine GET-Route, die den Inhalt der todo-Tabelle (siehe Einfache REST-API mittels PHP) zurück gibt. Ebenfalls haben wir eine POST-Route, die den neuen Text in die todo-Tabelle einträgt.
Für mehr Informationen wie man in Lumen auf die Datenbank zugreift, siehe Lumen Database.
Autor: Nils Reimers