Ich habe kürzlich eine API mit Laravel für ein Miniprojekt entwickelt, an dem ein paar Freunde und ich gearbeitet haben. Ich beschloss, eine weitere API zu entwickeln, aber stattdessen mit Lumen, da es ein viel leichteres und schnelleres Framework als Laravel ist.
Lumen ist ein Mikro-Framework, das auf den Kernkomponenten von Laravel aufbaut. Lumen nutzt viele bekannte Konzepte von Laravel wie Eloquent, Caching, Routing, Middleware und seinen Service-Container. Ein großer Vorteil von Lumen ist seine Geschwindigkeit, daher ist das Framework für den Aufbau von schnellen Microservices oder APIs konzipiert.
Auch wenn es in diesem Tutorial um Lumen geht, ist ein einfaches Verständnis der Funktionsweise von Laravel alles, was Sie brauchen, um dem Tutorial zu folgen.
Es gibt mehrere Möglichkeiten, Lumen lokal einzurichten. Für dieses Tutorial werden wir dies über composer
tun. Weitere Möglichkeiten, Lumen einzurichten, können Sie hier nachlesen.
Führen Sie in Ihrem Terminal aus: composer create-project — prefer-dist laravel/lumen lumen_api
Dies installiert Lumen und alle seine Abhängigkeiten für dich im lumen_api
Verzeichnis. Als nächstes benennen wir die Datei .env.example
im Verzeichnis root
in .env
um
Lumens Standardtreiber cache
(Stand 5.4) ist memcached,
, aber den brauchen wir für dieses Tutorial nicht. Es wird jedoch jeder der folgenden unterstützt: array
database
und redis
. Bearbeiten Sie die Datei .env
und ersetzen Sie die Standardwerte CACHE_DRIVER
und QUEUE_DRIVER
durch die folgenden Werte:
CACHE_DRIVER=array
QUEUE_DRIVER=database
Um unser Projekt lokal auszuliefern, können wir den in PHP eingebauten Server verwenden, indem wir den folgenden Befehl ausführen:php -S localhost:8000 -t public
Besuchen Sie localhost:8000
in Ihrem Browser und Sie sollten die folgende Seite sehen.
Was wir bauen werden
Wir werden eine einfache REST-API bauen, die Aufgaben zum Erstellen, Lesen, Aktualisieren und Löschen eines product resource
bearbeitet. Werfen wir einen Blick auf unsere endpoints
- GET /products – Holt alle Produktressourcen
- POST /products- Erstellt eine neue Produktressource
- GET /product/{id} – Holt eine Produktressource nach id
- PUT /product/{id} – Aktualisiert eine Produktressource nach id
- DELETE /product/{id}- Löschen einer Produktressource nach id
Datenbank und Migrationen
Lassen Sie uns unsere Migrationsdatei erstellen. Führen Sie den folgenden Befehl aus:php artisan make:migration create_products_table
Dadurch wird eine neue Migrationsdatei im Verzeichnis database/migrations
erstellt. Unser product resource
wird die folgenden Attribute haben: name
, price
und description
.
Fügen Sie der neu erstellten Migrationsdatei den folgenden Code hinzu.
Bearbeiten Sie .env
mit Ihren database
Konfigurationen und führen Sie dann den folgenden Befehl aus, um die Migration auszuführen. php artisan migrate
Erstellen unseres Produktmodells
Sie sind vielleicht schon daran gewöhnt, models
und controllers
über artisan
Befehle in Laravel zu erstellen, aber leider unterstützt Lumen diese Befehle nicht. Um eine Liste der verfügbaren artisan
-Befehle in Lumen zu sehen, führen Sie aus:php artisan
Navigieren Sie zum app
-Verzeichnis und erstellen Sie ein neues model
mit dem Namen Product.php
Im Gegensatz zu Laravel lädt Lumen Eloquent und Facades zunächst nicht. Um sie nutzen zu können, müssen wir die folgenden Codezeilen auskommentieren, die sich in app\bootstrap.php
$app->withFacades();
$app->withEloquent();
Controller Methods
Lassen Sie uns unser controller
erstellen. Navigieren Sie zum Verzeichnis app\Http\Controller
und erstellen Sie eine ProductController.php
-Datei. Fügen Sie den folgenden Code in die soeben erstellte controller
-Datei ein.
-
index
-Methode gibt alle verfügbaren Produkte alsJSON
-Antwort zurück. -
create
-Methode erstellt eine neueproduct
-Datei und gibt die neu erstellteproduct
-Datei alsJSON
-Antwort zurück. -
show
-Methode gibt eine einzelne Produktressource anhand ihresid
zurück. Diese wird ebenfalls alsJSON
-Antwort zurückgegeben. -
update
Methode aktualisiert ebenfalls eine einzelne Produktressource anhand ihrerid
. -
delete
Methode löscht eine Produktressource anhand ihrerid
und gibt einesuccess
Nachricht zurück.
Routen
Es ist an der Zeit, endlich unsere routes
hinzuzufügen. Öffnen Sie die Datei web.php
im Ordner routes
und fügen Sie den folgenden Code hinzu:
Wir gruppieren unsere routes
und fügen den prefix
api/v1
hinzu, da es sich um einen gemeinsamen Parameter für alle unsere URIs
Tipp: Verwenden Sie Prefix, um gemeinsame Parameter für Ihre gruppierten Routen festzulegen
Datenbank füttern
Bevor wir mit dem Testen unserer endpoints
beginnen, erstellen wir einige Beispieldaten, mit denen wir arbeiten können. Beginnen wir mit der Erstellung unseres seed
. Führen Sie aus:php artisan make:seed ProductsTableSeeder
Dadurch wird eine ProductsTableSeeder.php
-Datei im Verzeichnis database/seeds
erstellt. Bearbeiten Sie die Datei mit folgendem Code:
Bearbeiten Sie als Nächstes die Datei DatabaseSeeder.php
im Verzeichnis database\seeds
mit folgendem Code:
Wir werden die Model Factory von Laravel und die Faker Library verwenden, um die Beispieldaten zu erzeugen. Navigieren Sie zum Verzeichnis database\factories
und fügen Sie den folgenden Code zur Datei ModelFactory.php
hinzu.
Als Nächstes führen Sie aus:php artisan db:seed
Dies wird eine Reihe von Dummy-Daten für uns in unserem database
erstellen.
Testen unserer API
Wir werden Postman verwenden, um unsere API zu testen. Mehr über die ersten Schritte mit Postman können Sie hier lesen.